home *** CD-ROM | disk | FTP | other *** search
/ Risc World Words - Complete RISC World 1 to 6 / Risc World Words - Complete RISC World 1 to 6.iso / HTML / VOLUME3 / ISSUE3 / TEXT < prev   
Text File  |  2006-03-20  |  153KB  |  1,273 lines

  1.  
  2. ÿÿÿÿVOLUME3/ISSUE3/AGRM/INDEX.HTM Volume 3, Issue 3, The Archimedes Gamemakers Manual
  3.  
  4.  
  5.  
  6. The Archimedes Gamemakers Manual
  7. Copyright © APDL and Terry Blunt 2002. All Rights Reserved
  8. The Archimedes Gamemakers Manual is © Terry Blunt and Sigma Press. This edition also © APDL. All rights reserved. No part of this publication may be reproduced or transmitted in any form or by any means without the prior written consent of the Publisher nor circulated in any form, binding or cover other than that in which it is published and without a similar condition being imposed on the subsequent purchaser. 
  9. Published by -
  10.             APDL
  11.             39 Knighton Park Road
  12.             Sydenham
  13.             London  SE26 5RN 
  14.             Phone:  020 8778 2659
  15.             web:  www.apdl.co.uk
  16. Contents
  17. Chapter 1 - Introduction
  18. 1.1 About the Archimedes
  19. 1.2 The Environment
  20. 1.3 Programming Techniques
  21. 1.4 Making Notes
  22. Chapter 2 - Early Planning
  23. 2.1 Finding Ideas
  24. 2.2 Targeting
  25. 2.3 Types of Game
  26. 2.4 Originality
  27. 2.5 Addictiveness
  28. 2.6 Desktop Games
  29. 2.7 Teamwork
  30. 2.8 Some Do's
  31. 2.9 Some Don'ts
  32. Chapter 3 - More Planning
  33. 3.1 Identifying Major Stages
  34. 3.2 Data Structures
  35. 3.3 Layouts
  36.  
  37.  3.3.1 Positioning
  38.  3.3.2 Proportions
  39.  3.3.3 Novelties
  40.  
  41. 3.4 Preliminary Testing
  42. 3.5 Time and Memory
  43.  
  44.  3.5.1 Improving loops
  45.  3.5.2 Subroutines
  46.  3.5.3 Faster Printing
  47.  3.5.4 Arithmetic Variations
  48.  3.5.5 Decision Ordering
  49.  3.5.6 Data
  50.  3.5.7 Look-Up Tables
  51.  3.5.8 Screen Handling
  52.  3.5.9 A Last Twiddle
  53.  
  54. 3.6 Alternative Strategies
  55.  
  56.  3.6.1 Flags
  57.  3.6.2 Simplifying
  58.  3.6.3 Advance Calculations
  59.  3.6.3 Interleaving
  60.  
  61. 3.7 Time Sharing
  62.  
  63. Terry Blunt
  64.  
  65. ÿÿÿÿVOLUME3/ISSUE3/CAMERA/INDEX.HTM Volume 3, Issue 3, Fuji FinePix A210
  66.  
  67.  
  68.  
  69. The Fuji FinePix A210
  70. Trevor Attwell reviews the latest from Photodesk LTD
  71.  
  72.  
  73. The FinePix A210.
  74. This compact digital camera is very light to carry at about 200g, measuring only 64.5mm H x 98.5W x 40.5 D. It will appeal particularly to those who want a light, unobtrusive camera which will fit easily in most pockets or handbags. Normally it has a wrist loop, but this was not in the review kit. Such a loop minimises the risk of accidentally dropping the camera, but both camera and loop are best held together.
  75. Only two AA batteries are required in this camera, and Fuji recommend the disposable alkaline type from Panasonic. When new these provide 3 volts total, and in this camera are likely to offer some advantage over the nickel-hydride type. The reason is that although the latter can supply larger currents, in this application their lower voltage is a disadvantage. On test the camera stopped work when the Ni-MH voltage dropped from 1.3V to 1.1V per battery, after about three hours of continuous use. The manual doesn"t mention rechargables, but I normally use them for any power supplies that require low voltage batteries.
  76. Battery failure can come sharply, the indicator signal switching from full to empty in less than a minute. However, users would be well advised to carry spares without fail, because that well-known law ensures that you will run out of power precisely when you want them most. You should avoid lithium, manganese or nickel-manganese batteries for this application, and even the recommended type will have a reduced capacity at temperatures of 10 deg. C or below. If you are likely to work indoors, a mains power adapter could cut down the bill.
  77. The pictures are stored on "SmartMedia" cards, available in capacities from 4 to 128 Mb, in the usual doubling series (4, 8, 16 and 128 Mb). The review camera came with a 16Mb card. This will be enough for many users, but you can be caught out, and a backup card is a wise precaution.
  78. When pictures are to be transferred to your computer the SmartMedia card must be removed from the camera to be read, and subsequently replaced in the camera. The card is surprisingly robust, but it has its limits, and there is scope for damaging it in various ways during use, including picking up dust. It is best to avoid removing and replacing it unnecessarily. There are extensive notes about the card in the manual.
  79. The camera can produce pictures of various formats and qualities. Assuming a 16Mb card, the best quality ("Fine") gives 1600x1200 pixels, and requires 770k of storage for each of 20 pictures. "Normal" gives slightly lower quality, with 39 pictures. This will probably be good enough for most users who do not need big enlargements. In this mode the pixel count is 1280 x 960. The lowest "Basic" quality allows 75 pictures, with a pixel count of 640 x 490. This will suit those many photos which are unlikely to be enlarged at a later date.
  80. For the smallest 4M card, about 30 pictures measuring 640x480 can be taken, reducing to just 4 shots at the highest resolution. The number of pictures available for the current mode is displayed on the LCD, and is updated if a change is made to another format.
  81. In use, the picture being taken can be viewed on the LCD screen behind the camera, and those shots already stored on the card can also be viewed on it. The screen is always on when the camera is being used, but turns itself off if no shot is taken within 30 seconds. This short time is desirable to save the battery life. The real advantage of this screen is that it shows exactly the area that will be stored. Unfortunately, it has to be held some distance in front of the users head, so that it can be seen, and this can lead to camera shake. Also, with sunlight from behind or to the side, it can be very difficult to see the LCD picture. The LCD brightness can be adjusted to suit individual preferences.
  82. The alternative is a tiny optical viewfinder, maddening for anyone wearing spectacles, and not much better for those who aren"t. A small, bright ring appears in the middle of the viewfinder if the user"s eye is in the  correct viewing spot. If you are concentrating on the composition it is easy to lose sight of the ring, and the frame contents may not be set as accurately as you might have hoped. Undoubtedly the LCD is the better bet by far.
  83. Sometimes you may want to place people or objects in particular areas in the picture so that they are correctly vertical, or perhaps to ensure that the horizon is set accurately. Lines can be displayed on the LCD, forming nine rectangular areas, and these act as useful guides.
  84.  
  85.  
  86. The A210 copes well with back light. Both brightly lit areas and shadow retain detail.
  87. Handling the pictures
  88.  
  89. When it comes to downloading pictures, you"ll find things have changed - digital cameras now interface with PC USB ports, which RISC OS users do not have. Photodesk supply a simple system which will do the job. To use it, the SmartCard is removed from the camera, and slotted into a Microtech card-reader. Cables are supplied to allow the reader to talk to the RISC PC via the printer port, with the addition of a simple modification to one of the keyboard connections.  Setting up is very easy, and takes only a few minutes.
  90.  
  91.  
  92. Picture taken with sunlight behind the camera.
  93. The system used is supplied by the firm Surftec. This supersedes an arrangement previously used by Photodesk which, in its simplest mode, pictures were treated as single, standard JPEG files, stored under sequential numbers.
  94. Surftec"s system is more sophisticated. It handles all the pictures taken, and includes various devices to exclude copyright infringement. This requires a different password for every individual owner, without which the software won"t work. At the time of writing they are considering changing the password on a 6-monthly basis. While I have no more love for thieves than they have, this does seem a bit draconian -  and I wonder whether it could become something of a nuisance. I was unable to try the Surftec system, but this had absolutely nothing to do with Surftec or their product, but was due to gremlins in my computer, which took some time to sort out.
  95. How does the Fuji A201 compare with the others?
  96. Starting from the 84 page manual, this is in the usual A6 format. It is simply not practicable to describe and comment on its contents in full. The following list covers most of its contents.
  97. 1. Bilingual? You can have French or English text.
  98. 2. The date and time will be maintained unless you fail to notice that the batteries have been flat (or taken out) for at least 12 hours.
  99. 3. When a picture is being taken a small light appears close to the viewfinder. When this shows a steady green the camera is ready to go. If it is orange, but steady, the camera is dumping pictures to the SmartCard, if orange but flashing it is busily charging the flash. If it is flashing red, either the SmartCard is not formatted (or is, but is full up), or there is a write-protect sticker on it. More in the manual.
  100. 4. It is possible to photograph objects at distances in the range 80 to 130mm (macro). Flash can also be used, but the manual warns that this is not always satisfactory. The normal range is from 180mm to infinity, so I suggest that if you need to ensure the best sharpness in pictures taken between 130 and 180mm, try to use lots of light if possible, thereby forcing the camera to stop down, which may give a sharper result.
  101. 5. Zooming in and out is available, but only with one of two high resolutions in use. This ensures that the expanded picture will retain a reasonable amount of detail.
  102. 6. When playing back your pictures, you can enlarge any of them. The amount depends on the number of pixels in the result, and you can have x5 for 1600 x1200 images, x4 for 1280 x 960, and x2 for 640 x 480. These alternatives ensure that good resolution can be maintained. You can also zoom around the full picture.
  103. 7. You can "grab" up to 9 pictures and display them in a single frame. These are useful as reminders of what you have taken, and for spotting differences between similar frames. The pics are very small, and of little use if small detail must be checked.
  104. 8. One or more frames can be erased easily if you no longer want them. In fact it is almost too easy, and an "Are you sure" warning would not come amiss.
  105.  More advanced features
  106.  
  107. 9. The camera can be used in Auto or Manual modes.  Auto is clearly the simpler, and would be most used for social functions, holiday snaps and the like. Selecting Manual displays menu items with a number of choices, which can be changed as the user requires.
  108. 10. Flash There are five modes that can be selected, namely Auto, red-eye reduction, forced flash, suppressed flash and slow sync. The explanations of some of these functions could be improved for newcomers. The usual auto flash requirements are fine. The red-eye reduction did have some effect, but not as much as I should have liked. However, this is not an easy trick in a small camera with lens and flash only 28mm apart at their centres.
  109. 11. Self-timer This is the standard 10-second timer which allows the photographer to appear in the picture.
  110. 12. EV (Exposure compensation) An overall exposure measurement is frequently unsuitable for best reproduction of areas that are either very dark, or light, or both. Sometimes the full range of luminance within the whole subject can be rendered, sometimes not. The camera can only do what it is told, and some photographers may prefer to change to manual at this stage, if practical.
  111. 13. White balance Mixed light sources (incandescent, fluorescent etc) result in colour shifts in a colour photograph, this is generally quite unpleasant. The camera will try to find a reasonable colour compromise.
  112. 14. Movies Making colour movies occupies six pages of the manual - here are the basics. You can shoot movies for a time depending on how much storage you have available. A table in the manual shows that, for example, you can fill an empty 4Mb card in 23 seconds, or 94 seconds with a 16Mb store, or 774 seconds with 126Mb.
  113. The format is Motion JPEG, each frame taking up 320 x 240 pixels, at the rate of 10 frames/second, and you can zoom in and out. Naturally, sound cannot be included. If you have other material stored in the SmartCard, this will reduce the maximum length of your movie accordingly.
  114. The LCD is necessarily locked "ON" while movies are being made. There is no guarantee that the result can be played back on other cameras, even if they are of similar type.
  115. Playback is straightforward. It can be paused and resumed, has fast forward and rewind, and can skip. The movie can be repeated as often as required.
  116. Movie frames can be erased, either singly or all together, unless the frames involved are protected. If a SmartMedia card is subsequently formatted, any movies on it are erased, as would be expected.
  117. 15. The LCD brightness can be adjusted. I found little use for this control in practice, but other users may.
  118. 16. A "power save" is in use when no shot is being taken, unless the user deliberately turns it off. The "save" minimises waste of battery power by switching off the LCD if the camera is not used for 30 seconds. If it remains on for a further 90 seconds the camera will be turned off. If the power saving device is not in use, and the camera is left on for more than about two minutes, it will automatically be shut down. In all cases, recovery to working state is quick, simply by pushing any button.
  119. Conclusions
  120.  
  121. The Fuji A201, with 2 million pixels, offers a good all-round performance at a modest price, and is capable of producing prints of ample size while maintaining good visual quality. If you thought that earlier digital cameras reviewed in this magazine could do anything that any one could ever want, you may be surprised by the A201. In fact it can do anything that they could, and more. Its small size and correspondingly low weight makes it easy to carry on the person, and this will encourage owners to use it.
  122. Product details
  123. Product:
  124. Fuji FinePix A201 Camer
  125. Supplier:
  126. Photodesk Ltd     
  127. Price:
  128. £Camera and 64Mb smartcard £220, also a card reader at £90 is require
  129. Address:
  130. 1 The Courtyard, Southwell Business Park, Portland, DT5  2N
  131. Tel:
  132. 01305 82275
  133. WWW:
  134. E-mail:
  135.  
  136. A collection of sample photos taken with the FinePix A210 can be found in the Software directory on this issue of RISC World.
  137. Trevor Atwell
  138.  
  139. ÿÿÿÿVOLUME3/ISSUE3/CDWRITING/INDEX.HTM Volume 3, Issue 3, Creating CDs using RISC OS
  140.  
  141.  
  142.  
  143. Creating CDs using RISC OS
  144. Part 3 - Multi-session and re-writable CDs
  145.  In Part 1 of this series I said that multi-session CDs were rarely used now because CDR/W (re-writable) CDs are so cheap and so there's little point. However, there are times when multi-session is appropriate, so I'll describe how it's done.
  146. Multi-session data CDs
  147.  
  148. The first stages are exactly the same as for a normal data CD. You create an ISO image, and then burn the CD. The main difference is that you ensure that 'Multisession' in the 'Write data CD' window is ticked. You'll notice that when you click on 'Multisession' that 'don't fixate' automatically becomes unselectable.
  149.  
  150. Write the CD exactly as before and you should find that you have an apparently normal data CD. Shown below is a simple test I did when writing this article. On the left is the contents of the CDburn ISO filer (I used this method to create the ISO image) and on the right the resulting CD.
  151.  
  152. The next step is adding more data (another 'session') to this CD. Before you can do so you have to 'import' the first session. Open the 'Filer-like Data layout' window and, with the CD you have just written in the CD writer, click on 'Import previous session'. Note that if you have a CD reader and a CD writer you must put the CD in the write drive to do this, not the CD reader. After a short wait, depending on how much data is already on the CD, CDburn will tell you that it's read the data and you can open the ISO filer which will show all the files already on the CD. For the CD just written this would look like the left hand window shown above. Now drag the files you want to add to the CD exactly as you do when creating a new CD. When you have done that click on 'Generate Image' to create the ISO image and write it as before, remembering to ensure that 'Multisession' is ticked. Below are shown the ISO filer window with the new files and the resulting CD.
  153.  
  154. In the ISO filer you can see the original three files plus three more that have been added and on the right you can see that these have now appeared on the CD. Note that this is the same CD as used originally, the extra files have been added. You must make sure that you have the original CD in the drive before you attempt to add the session. If you've put another blank CD in then you'll have a scrap CD because CDburn will attempt to add a session to a previous session that isn't there.
  155. You can carry on adding sessions like this until the CD is full, but you should be aware that there may be problems reading them on some older drives. This is OK if you're creating a quick backup for your own use but if you intend to pass on your CDs to other people experience shows that RISC OS computers have a rather long life and users often have drives that would be regarded as prehistoric on other systems.
  156. The CD Tools window
  157.  
  158. Before I move on to re-writable CDs I'm going to return to the CD Tools window introduced briefly earlier. Click on 'CD Tools' in the CDburn 'Control Center' window and the Tools window will open.
  159.  
  160. I've already described using 'Extract track', so as we've just been discussion multi session CDs I'll deal with the section at the top right first. This is used to Fixate a CD which has either been created with 'Don't fixate' selected or as a multi session CD.
  161. With a multi-session CD you can use this to 'close' it when you are sure you don't want to add any more data. This can solve some of the problems that might arise with older drives and also means that no-one else can add more data to your CD. Before you can do this you either need to open the 'Write Data CD' window and drag the original ISO image to it or open the 'Filer like Data layout' window and click on 'Import session', whichever is appropriate.
  162. 'Show medium information' will tell you about the CD in the drive (the CD writer drive if you've got more than one), it's type, capacity, how many tracks, etc. For the CD I've just written it looks like this.
  163.  
  164. As you can see it shows that there are already two sessions on the CD, it's a writable CD (not CDR/W or 'deleteable' would be ticked) and that there's still 615 Mb, 70.04 minutes, of free space with 38 Mb, 4.23 minutes, of its capacity used. You can see that these figures approximate the the nominal capacity of 650 Mb and 74 minutes.
  165. In the bottom right are the controls used to blank a re-writable CD, and well deal with this next.
  166. Using re-writable CDs
  167.  
  168. As described in the first part of this series CDR/W discs can be 'blanked' and re-used. Of course, it is possible to use multi-session on the discs if you wish, but there is little point unless you have very restricted hard drive space. If this is the case then you are strongly advised to get a bigger hard drive as otherwise you are going to find writing CDs a very frustrating experience with the need to constantly shuffle data about.
  169. In fact, when using CDR/W media you proceed exactly as for normal CDR discs. If they already have data on them and you want to preserve this then you can copy the data onto your hard drive first and include it in the new ISO image. If it's not important to preserve it, for example, when doing a backup of a part of your hard drive and the new CD will replace the old, you can just blank the CD first.
  170. You will see that there are two options when blanking a CD. The first, 'Full blank', will overwrite all of the CD that had previously been written on to restore it to 'good as new' status. The second, 'Quick blank', just wipes out that part of the CD used for the catalogue information. This means that the data is still actually on the CD, so if it's in some way sensitive and the new data is not going to be large enough to completely overwrite it it will be possible for someone to extract it. It is also possible, especially with multi-track or multi-session CDs, for some machines to get confused by this.
  171. For your own use 'Quick blank' will be satisfactory, but if you're going to give the CD to someone else 'Full blank' is safer Luckily, because this is not such a timing critical operation as writing a CD, it is possible to blank a CD as a background task so the machine won't be 'frozen' until you've finished. It might be a bit 'jerky' while blanking is in progress but you will still be able to use it, and it shouldn't take very long.
  172. Re-writable CDs do not have an infinite life. They are usually quoted as being good for around 200 cycles, ie. they can be written to, blanked and re-used around 200 times, but this is often exceeded. In practice this is unlikely to be a problem as if you were using a CDR/W disc to do daily backups of a part of your hard drive, five days a week, and you followed the usual grandfather/father/son system it would take well over a year before you even exceeded even 100 write/blank cycles.
  173. Dave Holden
  174.  
  175. ÿÿÿÿVOLUME3/ISSUE3/COMPO/INDEX.HTM Volume 3, Issue 3, The Competition Page
  176.  
  177.  
  178.  
  179.  
  180. The RISC World competition page
  181. Stop winning stuff with RISCWorld!
  182. Win one of two copies of the latest DrawWorks
  183.  
  184. Last months competition was a very simple one, all you had to do was name the latest version of DrawWorks, which of course is DrawWorks Select. The logo that was on the competition page was of course for DrawWorks Third Millennium. Keen RISC World readers would have been able to get the answer from elsewhere in the magazine. So that should teach several readers, including previous winner David Hawes, to read the whole magazine before answering!
  185. So who are our lucky winners this issue? Step forward...
  186. Stephen Parkin
  187.  
  188. Robin Gordon
  189. A shiny new DrawWorks Select CD will be in the post before you know it!
  190. The end of an era?
  191. This will be the last regular competition page for a while. The reason? Well the reason is quite simple, not enough readers are entering the competition. You would have thought that the act of sending an e-mail would be simple enough and would be easy enough to guarantee a reasonable number of entries, but it doesn't seem to be the case. When we started the "new look" competition page we were getting lots and lots of entries, now it's dwindled to a hand full. If this trend continued we will simply end up just sending the prize to the same person every issue.
  192. However the competition page hasn't been completely killed off. We will still be running the odd competition when we have something really juicy to give away. In the meantime if you are disgusted that the competition won't be running every issue why not send a letter of complaint to the editor?
  193. Hugh Jampton
  194.         
  195.  
  196. ÿÿÿÿVOLUME3/ISSUE3/DISC/INDEX.HTM Volume 3, Issue 3, DiscWorld
  197.  
  198.  
  199.  
  200. DiscWorld
  201. Aaron Timbrell dives into the software directory.
  202. This issue we have some very interesting items. Top on my list are the excellent !Scribble PDF (Portable Document File) generator and the !Rdesktop client from eQ Research and Development. This months commercial offering is the Ergane translation program. Now some of you may well be aware that you can download this for free from the Internet. However the version we have here is the CD based one with all the dictionaries as supplied by APDL. Let the author David O'Shea tell us more.
  203. Ergane
  204.  
  205. This was originally a Windows program. Thanks to Gerard van Wilgen for writing the original and helping me understand the data file format! Using this program, you can translate from one language to another, or find synonyms, by translating from one language back to itself again. The program operates in two modes: exact match and, well, not so exact match!
  206. If you have exact match turned off, then entering 'light' would find, say, 'daylight', 'delight', 'delighted', 'enlighten', 'light', etc. However, the program runs rather slowly in this mode! In fact, it ran so slowly that I made it multitask. Moving the pointer over the output window will show you how far it still has to go! You can press ESC to stop the search, if it has already found the word you want, or if you get fed up
  207. With exact match on, the program will find what you ask for, or nothing! This does mean, however, that it runs much quicker. In fact, you rarely have to wait at all, unless there are lots of possible meanings for the word in question!
  208. Using Ergane
  209. When loaded, the program will install itself on the iconbar. Clickin
  210. menu over the icon allows you to choose the script (and keyboard mapping
  211. to use. You can also clear the program, which will reduce memor
  212. requirements to a minimum, emptying all cached data.
  213. If you click select on the icon, the main window, and script windows wil
  214. open. Here you can choose the 'from' and 'to' languages. Clicking menu ove
  215. the actual language icon allows you to get more information on it. At th
  216. moment, the information window doesn't parse the data very well (read no
  217. at all!). This will hopefully be fixed (improved at least) in the nex
  218. version. If the caret is in the translate icon, you can click on letters i
  219. the script window to enter strange characters. The keyboard is als
  220. redefined, so if you find that you can't type properly, check which scrip
  221. you have selected!
  222. If you close the output window, this can be reopened by clicking adjus
  223. on the iconbar icon. The output window will sometimes fail to updat
  224. properly. Just grab the resize icon and that should fix it. Also, tr
  225. 'wiping' over it with another window. This will (hopefully) be fixed in th
  226. next version.
  227. Dictionary data files
  228. You can use the standard Windows Ergane dictionary files, but whe
  229. extracting them, you will have to make a slight change. Say you have th
  230. Dutch data file, and you want to install it. Just make a directory calle
  231. 'Dutch' in the Data directory, and put the files in there, named as thei
  232. extensions. So DUTCH.ES0 would be called ES0 in the directory 'Dutch'. I
  233. there are .TR? files, you can delete them, since this version of th
  234. program doesn't use them.
  235. David O'Shea
  236. So to sum up this issues DiscWorld looks like this...
  237. Ergane
  238. The complete translation system.
  239. FinePix
  240. The full size JPEG images from the review of the FinePix A210 camera.
  241. Games
  242. Four example games from the StrongGames review.
  243. MakeHTML
  244. The full source for the RISCWorld HTML maker program.
  245. Modules
  246. All the source code and the executables, from Brian Pickards series.
  247. PD
  248. All the latest PD, shareware and freeware releases from the PD column.
  249. PowerBase
  250. The latest version of PowerBase and the example files discussed in Derek Haslams article.
  251. RDesktop
  252. The excellent remote desktop viewer from eQ Research and development.
  253. Scribble
  254. Gavin Wraith's PDF generator and example files.
  255. SGames
  256. A demo version of the StrongGames CD front end, so you can see screen shots of all the games supplied.
  257. Aaron Timbrell
  258.  
  259. ÿÿÿÿVOLUME3/ISSUE3/EDITOR/INDEX.HTM Volume 3, Issue 3, Editors Corner
  260.  
  261.  
  262.  
  263.  
  264. Editors Corner
  265. Aaron Timbrells own bit of the magazine.
  266. Well here I am again, with another action packed edition of RISC World. This issue sees the last regular competition page, we simply aren't getting enough entries to justify it continuing. I have a fixed budget for RISC World, and I would rather spend the money on something else that has a wider appeal, so anyone have any suggestions? If there is something you want to see in RISC World then tell us and we will do our best to include it. For example we received a number of letters asking where the PowerBase series had gone, well as a result it's back, because you the readers want it.
  267. We are also trying a new idea from this issue. APDL now have the rights to a number of book titles that have been unavailable for quite a few years. So we are going to serialise them in RISC World. This issue we are starting with "The Archimedes Game Writers Manual" by Terry Blunt. This will run for the next three issues. Let us know what you think of the idea.
  268. At the time of writing the RISCOS Ltd. AGM is only two weeks away. What's going to happen? Well I don't know, but by the time you read this everyone will know, as the meeting is open to members of the public. Since it will be a public meeting I will try and write up a report for this issue. Let's just hope that not too much dirty linen gets washed in public.
  269. One of the issues that has been raised by RISCOS Ltd. shareholders is that of the annual report. This has been available as a free download from the RISCOS Ltd. website. However the report has yet to be approved by shareholders, and a number of them, including myself, are not too happy with it. It should make for an interesting AGM.
  270. Editors Rant of the month
  271. There is only one thing worth ranting about this issue, whingers. MicroDigital have started doing their round the country roadshow, taking Omega prototypes out so potential customers can see the machine in the flesh. I attended the talk given by MicroDigital on the 11th of September to the London user groups. The last time I saw the machine was at the press day, and I have to say that I was very impressed. It was quite obvious that a lot more work had been done between the press day and the talk on the 11th. So what am I ranting about?
  272. Well MicroDigital seem to be pulling out all the stops, both on the development and the public relations. So why have people been complaining on the newsgroups? Well it seems that when MicroDigital did a talk on the 7th of September in Scotland the floppy disc drive didn't work, tragedy! Why some people seem to think that MicroDigital can produce a new computer design that runs RISC OS but not write a simple floppy driver heaven knows. Worse still some others have been complaining that the PCI bus doesn't work. Well its been working fine on the machines I have seen. If the PCI bus didn't work then the machine wouldn't work at all as so much hangs off it, not least the hard disc drive. So why have people been complaining? Well most of those slagging the machine off haven't seen one, so they most be getting their information second hand. Is someone wandering around telling porkies about the Omega? Who on earth would do such a thing?
  273. The RISC OS market has waited years for a new machine design, now on is on the horizon, and lots of us have seen it working. The Omega is coming and everyone ought to be delighted. It's the first completely new machine since Acorn days and will help revive a flagging market. It's faster than any previous RISC OS machine, around three times faster according to my tests. It has a graphics card with hardware acceleration and supports massive screen modes in full 24bit colour. This new computer must be good news for users. A sudden increase in the number of RISC OS machines should result in more software sales, and that would be good news for software developers. So why does there seem to be a concerted effort to rubbish the Omega? Someone must be worried, do you know who it is? I can guess, can you?
  274. As a final note last issue I said the engine in my Lotus 7 replica had gone bang. Well its now fitted with a re-built 2nd hand 2 litre engine from a Ford Transit (no not a diesel). It only took 2 weeks to strip and re-build the engine, then a further week to fit it, along with a new radiator and steering rack. I figured I might as well change these as it's almost impossible to do with the engine in place. The result is that the car now reaches 60mph in a shade over six seconds and is excellent for scaring the hell out of passengers. The down side? Well with the extra power the body has started coming apart at the seams, so the body tub will need re-building before I can drive it, damn!
  275. Printing RISC World
  276. The new look of RISC World means that when you want to print an article on your printer it will have the light yellow background. However most web browsers allow you to turn off the background images when printing. The example below shows the print dialogue box from Fresco.
  277.  
  278. As you can see the option "No Background" is ticked. If you want to print out any of the RISC World pages then make sure you have clicked a similar option in your browser.
  279. Aaron Timbrell
  280.  
  281.  
  282.  
  283. ÿÿÿÿVOLUME3/ISSUE3/EDUC3/INDEX.HTM Volume 3, Issue 3, The Education Column
  284.  
  285.  
  286.  
  287. The Education Column
  288. Andrew Harmsworth continues his series
  289. Salutations! After a long summer trekking around Canada, moving classrooms, and finally climbing onto the property ladder, the education column is back.
  290. First, a little moan. Last time I asked you, assuming there is anyone out there reading this, for a little light feedback on what you would like to see in this column. Not a jot. Not one electronic e-note. Not one iota! So go on, feel guilty please. I really would like to know your thoughts on RISC OS in Education.
  291. This month I take a look at an interesting use of search engines, dare to poke a dig at VA5000 (What?- ED), highlight one of RISC OS Select's bonus features that has a big part to play in networking, and get my hands on a potential winner for cash-strapped schools: eQ labs' !RDesktop.
  292. Acorn Who? Why the Link?
  293. The old Acorn websites no longer exist, and www.acorn.com is now owned by Acorn Technology Fund, Princeton. Yet many enthusiasts and developers' website still point to these sites! How do I know this?
  294. This web link takes you to AllTheWeb.com's advanced search facility. This is an excellent search engine, and produces - in this case - better results than Google.
  295. Fig. 1: Using the advanced, yet simple to use, search facility.
  296. It is not necessary to enter a word to search for - the very act of setting up a search for pages that must include www.acorn.com in the link to URL is enough.
  297. Fig. 2: First results.
  298. The links that appear are surprising: The C Acorn User Group, Stuart Tyrrell Developments, the Scottish Mathematics Council - and at number 5, one of my own websites! And you thought your website was up to date! Well, mine is now, so probably won't be listed if you try it yourself. I've also dropped Stuart Tyrrell an email, so we'll have to see if he updates it.
  299. (Editors aside - if you want another classic example of out of date links then check out 
  300. So having changed one of my web pages, how can I find out if anything else I run is still badly linking? Go back to AllTheWeb and set Must Include (url of site) in the URL. Pleasingly, no more of my pages appear to link to www.acorn.com!
  301. I'm about to take over as Radiation Protection Advisers (RPA) for my school. I thought it was probably a good moment to search for pertinent documentation about this, without having to dig through piles of paper in the office. Obviously there are similar tasks assigned to physicists the world over, so once again ones use of the web requires fine-tuning.
  302. In both Google and AllTheWeb it is an easy matter to direct searches to uk-only pages. In Google, the words site:uk added after the search term will only report sites with domains ending .uk, whereas in AllTheWeb one has to first go to the advanced search page, and find a relevant option there.
  303. Fig. 3: Forcing Google to report .uk sites only.
  304. These sorts of searches can be extremely useful, as they help you to reduce the number of pages that get reported to something much more manageable. More importantly, it helps in many cases to find the information you're after. I'm a firm believer that schools should stop teaching how MSWord works, and concentrate on the more useful aspects of education!
  305. For the record, Stuart Tyrrell emailed me within minutes to tell me that the page I found was on an old server, and only exists to prevent page not found errors coming up.
  306. Selective Schools
  307. RISCOS Ltd have recently published their third annual report. In it they specifically address the concern that schools have largely ditched their old Acorns. Apparently there are a number of independent sector schools who have upgraded to RISC OS 4. But what of Select?
  308. Unlike RISC OS 4, Select was never designed with thought for schools. However, it does have benefits. For example, my own RISC OS 4/Select StrongARM RiscPC has been able to operate completely effectively over our school network since the new version of OmniClient was released under the Select scheme. In fact, it even allows my machine to see MacOS machines running AppleTalk - to the amazement of the Music School who use them.
  309. Fig. 4: Select's new OmniClient sees all!
  310. Figure 4 shows the machines accessible at time of typing this article, none of which are Acorns. Yet, in all cases, files can be accessed as easily as if it were on a local drive.
  311. Given the original price charged for OmniClient, this feature alone makes the Select subscription excellent value for money - assuming that you have and need access to a multi-platform network.
  312.  
  313. Citrix Alternative?
  314. For some years, network users of Acorns have been able to access Windows sessions over a Windows Terminal Server (WTS), or alternatively Citrix Metaframe software. The Acorn clients have been developed by Microlynx, and are bundled as TopCat.
  315. Just as I was about to submit this article, it was announced by eQ lab that a preview version of an Acorn RDP client was available:
  316. Fig. 6: !rdesktop's preview page on the eQ labs' website.
  317. This is a client for Windows 2000 Terminal Services and Windows XP Remote Desktop Connection. I immediately downloaded the software, as my RiscPC is hung on a school network that supports WTS. There are two applications provided currently
  318. Fig. 5: !rdesktop and its setup application
  319. One simply sets up the server name, and your login details. The other is the client itself. After setting it up, amazingly I was immediately presented with a logon screen, which gave me full access to a Windows session on our network:
  320. Fig. 7: Accessing Windows sessions using !rdesktop
  321.  
  322. Their website says that it is "running well on a [RiscStation] and A7000". On my StrongARM RiscPC it flies! Should this be released fully operational (at the moment it does occasionally fall over due to network errors) it might be a useful addition to Citrix clients already in place. Since it is released under the GNU Public Licence (GPL) there are no licence costs. This is certain to be an incredibly useful piece of software for many people. It therefore gets the RiscWorld Highly Recommended award. Bravo!
  323. eQ labs' !rdesktop
  324. Virtual Acorns: At Last, A Failing!
  325. Since first getting hold of the demo of VA5000, I have been impressed at how useful it is. However, I have discovered a flaw: if the PC on which it runs fails, you have no VA5000! This is the situation I am in at the moment in my lab, as my Windows 98, PII-333 is running so slowly that if you click to open a folder it takes nearly an hour to achieve this. Meanwhile, the hard disc just thrashes. No, it's not full. No, there's loads of memory. Yes, it needs a new installation of Windows.
  326. Well, that about wraps up the column for this bi-month, except to say I've again telephoned RiscStation Ltd, to discuss the issue of the laptop that I've ordered. I was told that shortly everyone who has a deposit down will receive an email outlining the final stages prior to its release. In addition the website, out of date for some time, is to receive a complete re-write in a bid to improve customer communications. All good news. However they are still awaiting the final pre-production prototype, a complete re-design from the original.
  327. Perhaps we should hope to see it by Christmas?
  328. If you have any questions or comments on the use of RISC OS computers in education, please either email education@harmsy.freeuk.com or better still join the RISC OS Education Discussion List, and air them there.
  329.  Andrew Harmsworth
  330.  
  331.  
  332. ÿÿÿÿVOLUME3/ISSUE3/FILTERS/INDEX.HTM Volume 3, Issue 3, Filtering in Messenger Pro
  333.  
  334.  
  335.  
  336. Filtering in Messenger Pro
  337. A quick walkthrough with Hariet Bazley
  338. Filtering and scoring - the differenc
  339. In the previous part of this article I discussed scoring rules. The interface for creating a filter is very similar to that used for creating a scoring rule, but filtering is a little more complicated than scoring, since it takes place on a system-wide rather than on a single-user basis. Scoring rules (which only affect the colour and/or score of a message) can vary widely from user to user, since one user's settings cannot have any effect on how the same message is seen by another user reading the same group. Filtering rules, which actually move and/or delete messages, affect all users, and thus can only be set up by a user with the authority to do so - a 'system administrator'. 
  340. System privileges in Messenge
  341.  
  342. If you only have one user on your system, 'tandgwillis' for example, this will have been created with 'sysadmin' status by default. If you create subsequent individual users such as 'tom' and 'gillian', these will not (unless explicitly enabled) have 'sysadmin' status. This is like the concept of root on a Unix system - the idea is that during ordinary usage you do not allow yourself the power to make potentially destructive changes that will affect the whole system. 
  343. Non 'sysadmin' users can only alter their own display and editing settings, create scoring rules, and subscribe/unsubscribe to any groups that are already being fetched. The rest of the icons in the Choices panel are greyed out - including the Filtering icon. (This is why I am writing this as "Admin <bazley@freeuk.com>" rather than "Harriet Bazley <harriet@bazley.freeuk.com>" - when logged in as myself, I can't view the filters I've set up!) 
  344.  
  345. The Choices window as seen by a non-privileged user
  346. Filter priorities are importan
  347. We have a lot of filters on our system. One for every user, of which there are seven, one for every mailing list, of which there are five, and a spamtrap to catch all non-addressed e-mail, which necessitated the creation of separate filters to save the various other briefings and digests which are BCC'd to our address. 
  348. The Filtering rules window, like the Scoring rules window, displays a list of all the filters currently known to Messenger, in an order defined first of all by their 'priority' setting and secondly by the date on which they were created. The order in which they are listed is important!   Since (unlike scoring rules) only newly-arriving messages pass through filters, and since filters, unlike scoring rules, can actually delete or move the messages to which they apply, if a high-priority filter catches a message, any other filters further down the list will never see that message at all.
  349.  
  350. Creating filter
  351. The Edit filter window itself functions very much like the Edit scoring rule window, and most of my comments on the latter can be applied to the former without change. However, there are some important differences in the top section.
  352. Mail and new
  353. First of all, since filters apply to all incoming messages (and only incoming messages), there is no option to specify a specific group or set of groups to which a filter can apply. Instead, there are two option icons marked Mail and News. Most filters will be applied only to incoming e-mail, in which case deselecting the News icon saves Messenger the time and trouble of checking this filter against each and every incoming news posting as well!
  354.  
  355. Deleting messages permanentl
  356.  
  357. Secondly, the pop-up menu on the 'If matched' field has two important new entries in it - 'discard message' and 'store message in'. 'Discard message' is the real killfile;  where scoring rules simply mark a message as already read, a filter can delete it before it ever enters your inbox (although not until you have already spent ten minutes downloading it....)   This is irreversible, which can be unfortunate at times!
  358. 'Store message in' is the most widely-used filter option. If you select this, you can then enter the name of a group other than the main inbox (or the newsgroup in question, if the message was originally directed to a newsgroup) to which the message will be moved on arrival.
  359. Mailing group
  360. Moving messages into separate folders is, of course, a necessary step in order to set up a folder as a mailing list in Messenger. Many mailing lists now seem to use software which inserts the name of the list in square brackets into the subject line of any messages arriving via that list;  I suspect this is to make it easier to pick out mailing list content from a Web-based account, or to make it easier to filter in Outlook Express. Other lists, such as the Messenger list, insert a specific Mailing-List: header. Either or both can be filtered on, and getting a filter right for such lists is relatively easy as there is generally a steady stream of arriving posts in your inbox to show you where you have gone wrong! 
  361.  
  362. Setting up a filter to select messages of a type which only arrive weekly or less frequently takes longer to get right. Unlike scoring rules, you cannot 'refresh the display' to reapply an edited filter, since it can have no effect on messages which have already arrived, nor can you use colouring to indicate which filter was applied to a given message. All you can do is wait for the next message to arrive, and try to examine the headers very carefully to discover what went wrong!
  363. Filtering on body text or non-standard header
  364. A more subtle difference between scoring and filtering lies in the criteria which can be applied. You may have noticed that when defining a filter, the pop-up menu lists many more fields which can be checked against. One difference in this menu which is worth noting is that you can filter for text in the body of a message - although it should be borne in mind that this is considerably slower than just checking headers. For a sample speed comparison, try carrying out a search for text in the message bodies of a large newsgroup, then for the same text in the subject line! 
  365. Another difference which is even more significant is that, because the icon into which the name of the header is entered is writable, you can effectively filter on any field. Handy entries which are worth bearing in mind are Content-Type (multipart/alternative is the annoying kind which includes a second copy of the message text bulked out in HTML coding, big5 indicates text in a non-Latin character set) and X-RCPT (of which more in a moment).
  366.  
  367. How to 'fake' multiple addresses on a single FreeUK accoun
  368. ISPs such as Demon allow their users to register a 'domain' such as 'oaktree'. This entitles them to use a range of addresses all ending in oaktree.demon.co.uk, such as quercus@oaktree.demon.co.uk, dubovnuy@oaktree.demon.co.uk, Eiche@oaktree.demon.co.uk. 
  369. ISPs such as FreeUK give you just one e-mail address, of the form oaktree@freeuk.com. However, in reality any incoming e-mail addressed to xxx@oaktree.freeuk.com (note the changed position of the @) will arrive at your inbox - leaving it up to your system to do the sorting. For example, we were allocated the e-mail address bazley@freeuk.com. To my knowledge we are using at least seven sub-variants of this at the moment, of which harriet@bazley.freeuk.com is only one!
  370.  
  371. The X-RCPT heade
  372. Incoming messages through FreeUK's systems receive an extra header in the form X-RCPT, specifying the 'innermost part' of the To: address. If someone sends me a message addressed to harriet@bazley.freeuk.com, it contains the header X-RCPT: harriet. If the message had been addressed simply to bazley@freeuk.com, the corresponding header would instead read X-RCPT: bazley. It is easy to filter on the X-RCPT line.
  373. Multiple users, multiple addresse
  374. Every time you create a new user in Messenger, a new inbox is created for that user. You can thus simply redirect messages into the correct inbox in exactly the same way as you redirect them into mailing list folders - and the details for that user can be set up from the Edit settings portion of the Choices window so that outgoing mail always bears a pseudo-address in the form xxx@oaktree.freeuk.com and replies return to the correct user.
  375. The actual name under which you log into Messenger is quite irrelevant to the address you choose to use. Since all the filtering is done by manually created rules, rather than (as in the default setup) by detecting the name of the file downloaded from the server(!), it is quite possible to have a user 'cash' receiving e-mail addressed to finance@oaktree.freeuk.com, provided only that you have a filter checking for "X-RCPT: = finance" and redirecting it to the folder cash/Incoming mail. 
  376.  
  377. Harriet Bazley <harriet@bazley.freeuk.com>
  378.  
  379. ÿÿÿÿVOLUME3/ISSUE3/FOOTBALL/INDEX.HTM Volume 3, Issue 3, Football Manager for RISC OS
  380.  
  381.  
  382.  
  383. Football Manager for RISC OS
  384. Paul Johnson
  385. If you have played the original version (or the version on the last CD), you will have noticed that there is not an awful amount to actually do in the game. This complaint can be levelled at any form of simulation game.
  386. A case in point
  387.  
  388. Back in the 1980s, flight simulators were deadly boring affairs - you had a cockpit, a pile of dials and a large manual which explained everything as to what did what. Graphically impressive, but that was about it. The next stage of development was that the player could control certain aspects such as the height, speed and direction, but at the end of the day, it was still the same game. Eventually, we arrived at the situation on the likes of the PS2 et al that the simulator is used by the military - a far cry from something that would be seen in WH Smiths by some spotty youth on a demonstration Oric-1.
  389. Football is different as it really is a spectator sport, so the interest has to be kept by the animation of the players and the tactical side of matters. The tactical side really applies to any computer platform.
  390. In the case of FM, this is the team selection, team training, tactics and money management.
  391. Team Selection
  392.  
  393. To start with (after picking your team), you will start the game off with the same number of players as the team you have picked. There is an inherent problem with this though - say you pick Liverpool. At the start of the 2002-3 campaign, you will start off with a squad of 28 players which sounds really good. The problem is that you will not be able to afford to keep a team of that size and will need to offload (perhaps) 10 players. It is up to you to decide who stays and goes - will you dispose of Baros, Smicer and Heskey or will Gerard, Hyppia and Babbel get the push? Again, it will not be that simple - by losing Gerard, Hypia and Babbel, you're losing a talented midfielder, superb defender and a cracking centre back. How will that change the strengths of your team? Lose too much in midfield and it's a case of unless the defenders move forward (dangerous) and attack move back (unhelpful), then the number of attacks will diminish.
  394. Okay, we've sorted out our team and raised a few quid in the process and been left with a team of (say) 18. Now there is no way that in Division 3 you would have a team of premiership standard (unless you had a huge bankroll). To get around this, the players skill levels will be reduced. Michael Owen will not be able to split defences apart in the way he has in reality. Okay, he may still be fast, but he won't have the spark which makes him the player he is. Before someone spouts up that this is unfair, refer back to the original version of FM (and FM2) and you'll see that Kevin Keegan, Mick Mills and quite a few others in division 4 playing for Liverpool - nothing has changed that way.
  395. Training and Tactics
  396.  
  397. In my opinion, the original version lacked an important aspect; training. Sure, you could say what formation you wanted the team to play in, but you could not train. Due to this, the original game never really allowed for a team to progress and become better than other teams - it was all random with a skill increase with a promotion (and when you're relegated, due to a bug, you never lost that skill, though you should). FM2 introduced a rudimentary training system, but it was for the entire team, not team sections; what was good for defence is not going to be too good for attack, or the goal keeper.
  398. Back to the actual selection. When you play a match, you will presented with the following.
  399.  
  400. As you can see, there is a discrepancy between the two teams in both the midfield and attack. If you were to field a team with that much of a difference, you'll be on a hiding to nothing. You can also see that they are playing a different formation to you. While playing a different formation has it's advantages (if you play a 4-4-2 [four defence, four midfield, 2 attack] and the other team plays a 3-5-1 formation then you will have an advantage in defence and attack, but a disadvantage in midfield, the disadvantage of playing a different formation is that if you have a combined defence stat of 10, the opposition midfield score will be greater than yours, so more is won in midfield and more service given to their sole attacker (who may have a score of 12, so in theory, he can run rings around your defence). If you both play 3-5-1, there is no advantage or disadvantage and the game should be evenly matched.
  401. To improve the team statistics, you alter the team selection.
  402.  
  403. Before...
  404. This change improves your prematch statistics to.
  405.  
  406. ...After
  407. At this point, we have the best possible squad to go up against the legions of the enemy and that's fine and dandy. We have also decided on what formation the team will take. Wonderful. What we haven't decided on is what *type* of game the team will be playing. It is often heard that tactically, a team has gone out for a draw. This means one of two things; either the two teams are very evenly matched and are in a position in the league that getting a draw will be as good as a win or that they know under normal circumstances, they wouldn't stand a cat in hells chance of anything, so by containing the other team so they can get a minimum of shots on target, they can get at least a point out of it.
  408. A team's game plan may be defensive and hit on the counter. Again, this means that the defensive team is closing down the opposition and pinning their chances on a number of good passes to the midfield (or further) - the idea is that so many of the opponents players have been moved up that they will be vulnerable elsewhere. As long as you have players able to do this, it's quite a good way to play.
  409. Finally, there is the all out attacking game. Your team throws absolutely everything at the opposition. This is the most physically demanding of all the tactical games available and you should expect a couple of players needing treatment by the end.
  410. While it is possible for individual training programmes to be included, it makes more sense to lump all of the individual units together and have the goal keepers practicing penalties or other set pieces.
  411. The same applies to defence, midfield, forwards and reserves (as an aside, it would be interesting in the future to develop a reserve fixture list, but for now, I won't).
  412. Injuries
  413.  
  414. It is inevitable that a player will be injured. In the original games, a player was injured for a couple of games and that was it. There was no physiotherapy or anything like that. You'll be glad to know, that's been changed. While you can completely ignore a player (not nice!), it is in your interest to get a player fit - not only so you can play the player, but also that if you have to sell the player, then other teams will show interest.
  415. Money
  416.  
  417. This is the final part of the player game is the money aspect.
  418. In the original, money management was limited to buying a player (this is after a match and there is only one player available at a time), selling players (available after you've been offered a player to buy), getting and paying off a loan (only at the same time as being able to sell a player). The only income you get (other than a loan and selling a player) comes at the end of a game when you get the gate receipts.
  419. Not much to interest there. We can fiddle with things so that the teams can be altered before and after a match and that there is a larger pool of players up for grabs, but the largest change is sponsorship, advertising and most importantly, TV revenues. These three sets of money are decided at the start of the season and until your team hits Division 1, will last for a year.
  420. Right, we've now got the main parts mapped out. Next comes the RISC OS parts.
  421. We have three parts
  422.  
  423. 1. Animation .
  424. 2. Filer .
  425. 3. WIMP interaction.
  426. Animation is basically the football match, there is nothing else really that needs animating. Now the nice thing about football is that the same sprites can be used for both teams, the only difference is that the team colours need to be changed. RISC OS allows you to recolour sprites, which is useful for home and away strips as well as.
  427. The filer deals with all input and output of files. It makes sense to use MessageTrans for reading in data; it makes sense (why re-invent the wheel?). However, using MessageTrans makes the code platform specific. Fortunately, C++ allows us to use something similar to MessageTrans so that a datafile containing something akin to.
  428.      team1:Liverpoo
  429.      team2:Arsenal
  430.      team3:Oldham Athleti
  431.  
  432. can be easily used.
  433. WIMP interaction is how the player will be able to tell the game what is going on. The original version was all keyboard entry - 99 to continue and the odd letter but beyond that, there was very little else. The advantage of the WIMP is that you get to do what you want to do by clicking. Okay, the mouse is really being used as a substitute for the keyboard, but as was observed in FM2, the gameplay was improved when the joystick option was added in - it was just a plain swap.
  434. The aim of the re-write is to keep as far as possible to the original version, but to make it as playable as Premier Manager (which is available on the Krisalis collection from R-Comp). The second aim of the game is to allow for other platforms to be able to use the central engine and include in their own parts (by using (say) GTK or wxWindows). This is actually a very simple thing to implement. As the game is being written in C++, we have to use either GCC or EasyC++ (to use EasyC++, you will need the updated version from ProAction/APDL). To ensure that we keep the OS specific parts away from the rest of the code we have to surround the OS specific material with.
  435.      #if defined(__EASY_C) || defined(__riscos__
  436.      /* OS Specific code *
  437.      #endif
  438.  
  439. This pre-processor directive also has to be used for header files.
  440. Why do we need this? Simple - try to compile this under Linux or any other platform (no cheating and using the GCCSDK cross compiler here either!).
  441. /* very simple code which won't compile under anything other than RISC OS */.
  442.      #include 
  443.      #include 
  444.      #include "kernel.h
  445.      #include "swis.h
  446.       
  447.      using namespace std
  448.       
  449.      int init_wimp(
  450.      
  451.        int wimp
  452.        _kernel_oserror *e
  453.        er = _swix(Wimp_Initialise,_INR(0,2)|_OUT(0),310,"TASK",0,&wimp)
  454.        if (er != 0
  455.        
  456.          cout Under g++ (2.96, Slackware Linux 8.0), I get the following.
  457.      test.cpp:3: kernel.h: No such file or director
  458.      test.cpp:4: swis.h: No such file or directory
  459.  
  460. If I alter the code so the preprocessor parts are included, then the output becomes.
  461.      Task handle = 
  462.  
  463. Which is what you'd expect.
  464.  
  465. There is another way around this, and that is to include RISC OS specific source files and have "hooks" inside the engine. The RISC OS specific files are compiled by using a different make file to the other platforms (which have their own makefiles and OS specific code).
  466. Finally I will ask this folks - I am a useless artist, please help out and send in some sprites for the animation.
  467.  
  468. Paul Johnson
  469.  
  470. ÿÿÿÿVOLUME3/ISSUE3/GAMEPREF/INDEX.HTM Volume 3, Issue 3, The Archimedes Gamemakers Manual
  471.  
  472.  
  473.  
  474. The Archimedes Gamemakers Manual
  475. Copyright © APDL and Terry Blunt 2002. All Rights Reserved
  476. Preface
  477. This book is for those new to the Archimedes, and probably new to games programming. Of necessity, some knowledge of programming in Basic is assumed, so with this in mind working with a copy of the BBC Basic Guide to hand is advisable. For those producing promising games but needing to delve deeper into the Archimedes for more advanced work, serious consideration should be given to the expense of the Programmers Reference Manual.
  478. The Archimedes Gamemakers Manual can be separated naturally into two parts. The first is a guide to planning and design, as well as programming techniques particularly applicable to games. The second part is three groups of subsections that concentrate on each loosely defined game type. As it is impossible to precisely define a game type reading over several in the same group will probably be necessary. There is a final chapter devoted to using the Basic assembler to produce useful ARM code extensions.
  479. The ideas and methods contained here are intended as a guide rather than a set of absolute rules, so with experience it will be possible to extend and improve on this work. Also, even the very best programmers will admit that there's always a different view of a familiar task, so it pays to look closely at any program listings that come to hand. The ideal solution to a problem could quite easily be buried deep inside something as remote from games as a desktop diary program.
  480.  
  481. Personal Comment
  482. I would like to thank Minerva Software for their interest and suggestions while this book was in its early stages, Nick Pelling for some timely help near the book's completion, and Steve Turnbull for encouragement and moral support throughout the development of this, the most complex work I have undertaken to date.
  483.                        Terry Blunt
  484. The Archimedes Gamemakers Manual is © Terry Blunt and Sigma Press. This edition also © APDL. All rights reserved. No part of this publication may be reproduced or transmitted in any form or by any means without the prior written consent of the Publisher nor circulated in any form, binding or cover other than that in which it is published and without a similar condition being imposed on the subsequent purchaser. 
  485. Published by -
  486.             APDL
  487.             39 Knighton Park Road
  488.             Sydenham
  489.             London  SE26 5RN 
  490.             Phone:  020 8778 2659
  491.             web:  www.apdl.co.uk
  492.  
  493. Preface to this edition
  494. This book is being revived and re-published because there are now very few technical or how-to-do-it books for RISC OS. At one time the many magazines published listings, often for games, which enabled people to find out how it was done and to write their own programs. As you might expect, games are always one of the first things that people try to write, and Acorn computers have always been very  easy to program for the learner.
  495. When it was written in 1990 the generic name for Acorn's 32 bit computers was still 'Archimedes'. The fastest machines available only had ARM 3 processors and almost all users had an ARM 2 and the standard operating system was RISC OS 2.  Hard discs were a rarity and most machines only had an 800K floppy. I Mb of RAM was the most that could be expected as this was the norm on A3000 and A310 models, although 2 Mb was increasingly common and there was a sprinkling of 4 Mb machines. So to reach the widest possible market programmers had to write for the lowest common denominator machine, ARM 2 with 1 Mb of RAM.
  496. It's amazing how well they did. Some of these games are not only still playable but just as much fun and as addictive as they were when first released.
  497. Modern RISC OS machines are very much more powerful in all respects. They have much better graphics, are immensely faster, 8 Mb of RAM would be regarded as 'cramped', and a hard disc is the norm, not the exception.
  498. Despite the advances the underlying system is still very similar to that of 1990. For this reason almost all of the techniques described in this book still work very well today, and will probably work in the future. This means that this book is still a valuable resource for the budding games programmer. 
  499. You probably won't write the next great blockbuster (though who knows?) but you will probably have a lot of fun.
  500. Our thanks to Sigma Press, the original publishers, for permission to re-release this book. We will be serialising the entire book over the next three editions of RISC World, if you can't wait then a full printed version can be obtained from APDL at the usual address and there is also a  Special Reader's Offer (see the RISC World Contents page for details).
  501. Dave Holden
  502.  
  503. ÿÿÿÿVOLUME3/ISSUE3/HUGHJ/INDEX.HTM Volume 3, Issue 3, The Hugh Jampton Experience
  504.  
  505.  
  506.  
  507. The Hugh jampton Experience
  508. With your host... Huuuuugh Jampton!
  509. Thank you, thank you. No, please, thank you. Well I am delighted to be back. Now with the editors special permission I have been given a whole column of my own. Indeed Aaron described it as the last in a series of one, which sounds great! Anyway a funny thing happened to me on the way to write this column, a man walked up to me and said.
  510. "Excuse me, don't you work for RISCOS Ltd?".
  511.  
  512. I could understand the mistake, after all I had just been standing in the unemployment queue with my arms crossed scowling at everyone.
  513.  
  514. "No I am sure you work for RISCOS Ltd"
  515.  
  516. he continued, I explained that I didn't but with some serious medication probably could.
  517.  
  518. "No, you are having me on aren't you, what's on the next Select CD then?"
  519.  
  520. I told him I had no idea.
  521.  
  522. "See you do work for RISCOS Ltd, I said you did!".
  523.  
  524. No I don't work for RISCOS Ltd, but how to prove it? Easy! I asked him if he had read the latest RISCOS Ltd annual report.
  525.  
  526. "Of course great news, yes, looks very rosy for the future, a job well done!".
  527.  
  528. I then took out a pen and tore a piece of paper off my suit and demonstrated how to add together two numbers, he looked crest fallen.
  529.  
  530. "So you can add up then?".
  531.  
  532. Yes.
  533.  
  534. "So you don't work for RISCOS Ltd?"
  535.  
  536. No.
  537.  
  538. "Are you sure?"
  539.  
  540. I fumbled in my pocket and pulled out a VirtualAcorn CD.
  541.  
  542. "Oh well, that clinches it. You can't work for RISCOS Ltd if you have that!"
  543.  
  544. Indeed. And you know what dear readers, I never saw him again.
  545. That Windows feeling...
  546.  
  547. I was wondering what on earth I could use to fill up this column, then out of the blue I was sent some rather amusing pictures which I thought I really ought to share with you. So starting off here is one for everyone who works in an office armed with Microsoft software.
  548.  
  549. Of course one of the great advances in modern computers has been the introduction of badly animated "helper wizards". Thankfully it seems that RISC OS software hasn't been infected with this sort of thing...
  550.  
  551. ...unless you count the silly "Top Tip" screen in DrawWorks Millennium. Still for anyone that has ever tried copying a large number of files under Windows may I offer this.
  552.  
  553. A long time ago a rumour started circulating that Microsoft was including special hidden options inside its programs. Well we can now reveal its true, if you don't believe me have a look.
  554.  
  555. Finally here is a little something for everyone who has just had enough.
  556.  
  557. And finally may I introduce the latest in labour saving gadgets. Ideal for any one who needs to use a Windows computer on a daily basis....
  558.  
  559. Hugh Jampton (Graduate of the John Kortink Customer Reassurance and support Program - known as CRaP)
  560.  
  561. ÿÿÿÿVOLUME3/ISSUE3/LETTERS/INDEX.HTM Volume 3, Issue 3, Letters Page
  562.  
  563.  
  564.  
  565.  
  566. Letters Page
  567. All the comments from our readers that we can print...
  568. Hi,
  569.  
  570. After a rant on comp.sys.acorn.misc I subscribed to RiscWorld.
  571.  
  572. Thanks for the first two issues I asked for. Having found the HTML on my Toshiba laptop. Both issues worked as I expected them to, including the link to MicroDigital, and this e-mail. Tomorrow I will check whether my !Fresco on the Risc PC is up-to-date enough to read the disks.
  573.  
  574. Thanks again
  575.  
  576. Henry Falkner
  577. Many thanks for the e-mail. After the couple of letters in the last issue from readers who have stopped subscribing it's nice to have the opposite. It doesn't matter if the copy of Fresco is out of date, as we supply a read only version on each RISC World CD that will read the issue correctly. Remember the more subscribers we get, the more money I have to spend (rubs hands with glee), so recommend RISC World to a friend, you know it makes sense.
  578. Aaron,
  579.  
  580. I noticed just now that the main arrows and logo lack a mask. Here are some new ones - with masks!
  581.  
  582. Andrew Harmsworth
  583. You know what, he was right. The new "masked" versions are included with this issue. So thats only taken 12 issues for someone to notice. I always meant to put a mask on them, but I obviously never got around to it. Perhaps someone would like to design some better ones?
  584. Last issue I asked for feedback, and I am delighted to say we have had quite a lot...and some of it I can actually publish...
  585. Aaron,
  586.  
  587. You asked for feedback in the last issue. Well I like the whole thing basically. Although I've no interest in games and systems programming, I'm sure others do, so it needs to be there. I particularly like to read other points of view in the letters and especially the interviews sections.
  588.  
  589. We are all avidly requiring news about our platform and to those 'knockers' who have foolishly swapped to PCs; well that's their bad luck. I work in a large HE college with hundreds of PCs but most luckily I have also got a RPC SRP11 machine with a HP Scanjet 4C and Epson Stylus 850 colour printer. Whenever the PCs can't handle those little (and large) diagrams drawings and illustrations, guess who does them for the college then!!??
  590.  
  591. There is a PC on my other desk, but it only gets used for the internet, Pegasus e-mail and occasionally Access files from other offices. The RPC is also networked to the college with NetLinks, and this is used to download stuff directly to the harddisc. The college spends lots of cash trying to keep up to date with Bill Gates retirement fund (sometimes called "improving the systems we sell"). They have recently given in and had to start leasing the PCs because of the horrendous cost of upgrades and repairs!
  592.  
  593. My machine ain't been upgraded once and still outperforms these PCs! The main programs used are Poster (4mation played a blinder with that little gem!) DrawWorks Millennium, EasyWriter, RiScript and a number of conversion utilities. I also use an A5000 and Canon BJC600 for bulk colour jobs such as adverts, and I still use an Archimedes 410/1 and 3 BBC Masters (one for Teletext).
  594.  
  595. The Archi was bought around 1990 and still works fine. The BBCs are 14 years old! How many PCs last that long? At home I use a RiscStation 7500+, scanner and Canon BJC-6100. Great stuff. I enjoyed Weird Wide Web and Hugh Jamptons humour. Hope he can be replaced. The Messenger stuff is mostly rubbish, but advocacy can be useful to find out other folks views. More articles on 'how to' would be nice (such as connecting to a MIDI organ with RiscStations break-out cable; how to use a digital camera.) I will not be re-subscribing to Acorn User - I think £4.20 for a thin black and white (and recently pretty boring) mag is far too much.
  596.  
  597. Perhaps they should consider a CDROM output like yours? I bet the advertisers aren't too pleased either! Well hope that's of some use.
  598.  
  599. Sincerely
  600.  
  601. Thomas Shevels.
  602. Thanks for the comments. We will keep running programming articles, they may only appeal for a minority, but we think they are important. PCs are a thorny issue. I have had a PC and a RISC OS machine next to each other for 13 years. In that time there have been two RISC OS machines, an A310 and a RiscPC. Both have been expanded over the years, but neither has really cost a great deal. In the meantime there have been 5 different PCs, starting from a 286, going up to a Pentium 4. Each time the PC got replaced the old one went in a skip (well apart from the last one which is still going in a supporting role). Everytime there is a major Windows upgrade I get a new machine, it's more cost effective that trying to get the new Windows running on the existing machine. As for reliability, well to be honest I have never had that much trouble with Windows, in fact I would have to say that for me both RISC OS and Windows have been as reliable as each other.
  603. I hadn't seen a copy of Acorn User for some time, but recently had the "pleasure" of looking at one. To be honest it didn't really appeal, ok, in my opinion it was awful. The argument often used is that the RISC OS community needs a newstand magazine. Well we may well do, but not the one I saw the other day. The future of Hugh Jampton is rather undecided at present, should he be allowed back (Yes - HJ). As a tentative step we have given him a column in this issue, what do you think?
  604. And now a financial question....
  605. Hello again.
  606.  
  607. I received my RISC world with my review in it, which looks rather good all finished I thought. Do we still get paid for the RISC World articles or not? if so what is the procedure for doing this?
  608.  
  609. Mat Thompson
  610. Unlike some other magazines we pay for all articles published, and we will continue to do so. So if you would like to earn a crisp £50 why not write an article for us. You will be sent a form to sign, and then you should get a cheque shortly after the issue is published. Now a competition based question.
  611. Dear Aaron,
  612.  
  613. As the dubious winner of the lowest BogoMips score on my A5000, (my RISC 600 did not give a much higher number!), changing elements such as screen modes did not make much difference. I thought on this months disc you would reveal all about how best to use BogoMips to improve the speed on a machine. Perhaps the only answer is to upgrade the hardware.
  614.  
  615. Brian Tunbridge
  616. Upgrading the hardware is about the only way to improve a bogomips figure. The BogoMips test runs in the processor with no input or output, so overclocking the processor is the easiest route. The StrongARM can be over clocked quite easily at home, if you are brave enough to cut the tracks, and remember to fit a cooling system. The only was I know of overclocking earlier processors is to change the crystal - which is why I had a 36Mhz ARM 3 in my Archimedes A310.
  617. Dear Aaron,
  618.  
  619. There are certainly questions over the continuing viability of RISC OS, as several of your correspondents have indicated.
  620.  
  621. The most "popular" issue is Web page access. I am puzzled. People report difficulties accessing Web pages with RISC OS browsers. I generally use Fresco v. 2.13, and except for a cranky bank site in New Zealand, I don't experience problems. Anyway, I don't really want to risk Internet banking, so that's no big deal. In fact, in my experience Fresco stacks up well alongside Internet Explorer and Netscape, both of which I have dumped off the Wintel box at work in favour of Opera, the former on account of security issues, and the latter on account of it's horrible. The only area where Fresco really lets me down is that it won't decode Japanese pages. That can be done using Oregano, but that suffers from the huge drawback that even the latest version has been verified to fail to decode the Japanese text inside pull-downs (which is why on the rare occasions I go Japanese, it's using the Oregano demonstrator - I'm blowed if I'm going to pay 50 quid for something that doesn't work).
  622.  
  623. So, if Web access isn't that huge an issue, what is the problem? That's simple - peripherals. If my printer dies I will have great difficulty replacing it. Not only are drivers an issue, but here in Japan you basically can't buy parallel printers - it's USB or nothing. Likewise my ISDN terminal adaptor, which is the last I've seen in captivity with an RS232-C interface, as TAs are all USB, too. Yes, a couple of USB cards have now come out, but that same dirty word is being bandied about for them, too - "drivers". I'm not sure how big a problem that really is, as my sons' iBooks run anything plugged into their USB ports without additional drivers. I have no idea whether that simply means that Apple have built into OSX drivers for every peripheral under the sun (seems improbable), or that they've found some clever generic-driver trick. I await with bated breath further information on peripheral compatibility of USB-equipped RISC OS computers. The shops here are full of nice-looking scanners, all USB...
  624.  
  625. For the time being, I'm sticking to RISC OS, for two reasons - I've got a RiscPC, and it works nicely. I won't go the Wintel route if I have to abandon ship. I use a Windows 2000 box at work, and although the OS is rock-solid, it's horrible (Microsoft never have discovered that a GUI is actually meant to be used). My sons love Mac OSX (especially after OS 8 on their old PowerBooks), but they're old RISC OS hands and say the RPC remains much nicer to drive, even our now-ancient v 3.60. So the probable replacement, if there has to be one, would be a Mac. Just one thing, though - whereas Windows, even Win 2000, has Jaws lurking underneath in the form of the remnants of DOS and all those crazy DLLs, Mac OSX has an actual T-rex down there, called UNIX. OK, so it's rock-solid and the gurus love it, but if it decides to bite, it's terminal, as the non-Apple Mac OSX book admits (also a disincentive in the direction of Linux). With RISC OS I feel safe - you can't break it, and believe me, I've tried.
  626.  
  627. Now, about connecting to and driving those USB peripherals...
  628.  
  629. Regards
  630.  
  631. Michael Poole
  632. Long term supply of peripherals for RISC OS machines is a potential problem. We now have two competing standards for USB interfaces, although it seems that most people are gravitating towards the Simtec designed interface as the standard. Of course an interface on its own is useless without the drivers. So someone is going to have to write the drivers. Who should do this? Should it be RISCOS Ltd, or should it be the manufacturer/supplier of the card? Lets face it it isn't going to be manufacturer of the USB device in question, will the likes of Canon and Epson be producing RISC OS drivers? No. However USB is only part of the issue, we need updated printer drivers. Many modern printers don't have error lights, they report problems via th
  633. software control panel on the computers screen. Since most manufacturers use their own methods for error reporting, and they seem to change it with every printer model a small company would have great difficulty in keeping up, as we have seen over the last few years, how much development have you seen to the RISC OS printing system over the last two years?
  634. RISC OS is an excellent operating system, but its getting left behind. What is needed is someone to grab RISC OS by the scruff of the neck and put people to work on it and this should be the job of RISCOS Ltd.
  635. So far it seems we had a mistake free issue last time. Surely that can't be right, er...no...
  636. Dear Aaron,
  637.  
  638. Not fatal, but you forgot to close the <ul> 2/3 way through: file:/CDFS::RISCWORLD_3_2/$/HTML/BELLS/INDEX.HTM. There's also a spurious <li> but who really cares? :-)
  639.  
  640. Cheers
  641.  
  642. Andrew Harmsworth
  643. Hmmm. So it seems that apart from un-masked images and duff tags we had a fairly mistake free issue last time. Can we reduce the number of mistakes to zero, only time will tell...
  644. Aaron Timbrell
  645.  
  646.  
  647.  
  648. ÿÿÿÿVOLUME3/ISSUE3/MAKEHTML/INDEX.HTM Volume 3, Issue 3, The RISCWorld MakeHTML program
  649.  
  650.  
  651.  
  652. The RISCWorld MakeHTML program
  653. Aaron Timbrell explains the RISCWorld MakeHTML program
  654. Editing RISC World is a very enjoyable job. However what isn't enjoyable is the grind of making the HTML files from the articles sent in by authors. I receive articles in a number of formats, including Impression, Ovation, TechWriter and plain text. Taking each article apart by hand and converting it to HTML is very time consuming, I know, RISC World was done that way when I started editing it. By coincidence Dave Holden was having a similar problem converting printed manuals to HTML format. While we were chatting about this the answer presented itself, automatic HTML converters.
  655.  
  656.  
  657. The MakeHTML program in its current state
  658. Automatic Conversion
  659.  
  660. Although we both had a similar problem, the solutions we decided to adopt were slightly different. Dave Holden's problem was taking complete manuals, sometimes with hundreds of pages, and making HTML versions of them. The articles I was dealing with were much shorter. So I decided that since about half the articles I get sent were in plain text format I would work from that point of view. Articles arriving in formats other than plain text could easily be converted to text before being processed by the program.
  661. Since all RISC World articles have basically the same layout, header and footer I decided to store these as stand alone files inside the application. Also since I am generating HTML to a fixed template I didn't go to the trouble of making the application configurable. With this in mind I started work.
  662. Conversion problems
  663.  
  664. A quick mock up program was produced, this processed a text file to produce simple a simple HTML file using the following process:
  665. Load the text file to be converte
  666. Load a default HTML header from a directory inside the applicatio
  667. Scan through the text file adding Parapgraph (<P>) tag
  668. Add a default HTML footer (loaded from a directory inside the application
  669. Save the resulting HTML fil
  670.  
  671. Of course the result didn't work as intended. The questions is why? The answer is quite simple. When I make an HTML file from a text file I apply a series of rules to produce the finished result. What I needed to do was to work out what rules I used, and then to write a program that did exactly the same.
  672. Constructing rules
  673.  
  674. To make matters easier I decided that the first rules to be written would be those that covered each single character in the original text. Each character would need to be scanned and some would need to be replaced by strings. For example, a number of programming articles contain either the greater than (>) or less than (<) symbols. However in HTML these are used to contain the "mark-up" commands. So the program needs to replace these with the correct HTML versions, which are of course > and <
  675. So I wrote a subroutine that could be pointed to a block of text and would scan each character one at a time using a set of rules. If the character being read had no rules attached to it then it would be copied directly from the original text file to the new HTML file. If however the character had some rules attached (as in the case of <) then the rule would be applied and the "correct" HTML would be inserted in the new file instead.
  676. Having done this another problem presented itself. Although the program would scan a text file written by me and produce the correct result, when I tried it on some older articles submitted by authors it fell over and generated rubbish. Strangely enough on examining the text files I found out that even though a text file is just alphanumeric characters there is still a lot of potential for people to construct them differently. As a simple example when writing a text file for RISC World I don't underline headers as I know they will be larger when converted to HTML. However many people do so you could end up with the following in the converted HTML
  677. This is the header
  678.  
  679. ------------------
  680. Which means the offending underlining has to be removed. Since the purpose of the exercise was to automate the process the program had to understand these underlines and ignore them. I then discovered that some people use equals signs for underlines and had to build rules for these as well.
  681. Another problem concerns carriage returns. Often when writing a text file its easy to insert carriage returns before the end of lines to keep the line lengths down, so the program needs to be aware of this. Just hunting for carriage returns in the text makes a real mess, so instead the program needs to look for full stops followed by a carriage return, or in the case of one author a full stop, then a space, then a carriage return!
  682. This results in a better HTML file. However not all sentences end with a full stop, they might end with a question mark for example. So I had to build in more rules to detect the ends of paragraphs. After a few days work the resulting program worked correctly for 90% of the articles I was sent. So as far as I am concerned its finished enough to be used, and of course shown to RISC World readers.
  683. The final rules
  684.  
  685. Shown below are a simplified version of the process the program uses to scan a text file. Since the whole thing is written in BASIC it's very easy to take apart so that you can see the rules for individual characters.
  686. Load the text file to be converte
  687. Load a default HTML heade
  688. Start at the beginning of the text fil
  689. Find the first end of sentence followed by a carriage retur
  690. IF the length of the text up to the first carriage return is greater than 40 THE
  691. Examine this to see if its a headin
  692.     IF this starts with a numeric character THEN it is probably part of a list so treat it as a short paragrap
  693.     IF this starts with a Tab or a Bullet point THEN it is probably part of a list so treat it as a short paragrap
  694.     IF we have not processed this text THEN turn it into a heading reading each character in turn and applying rules to it as required
  695. ELS
  696.     This must be a paragrap
  697.     Examine each character in turn to apply any required rules until end of paragraph is reache
  698. Move to the next character after the carriage return we found in step 
  699. REPEAT UNTIL we have read all the text fil
  700. Add a default HTML footer (loaded from a directory inside the application
  701. Save the resulting HTML fil
  702.  
  703. These are roughly the rules used by the program. A copy of the !MakeHTML program is in the software directory on this CD. Feel free to take it apart and see how it works, or indeed to improve it. The copy here has a couple of errors/ommisions in its rules for each character, I know what they are but haven't bothered fixing them as yet. It would be quite easy to alter the program to generate different HTML based on what you need, so feel free to have a fiddle with it. If anyone does improve it I wouldn't mind having a copy! Oh and if anyone bothers fixing the silly bug relating to full stops let me know as well!
  704. Next time
  705.  
  706. Next issue I will be handing this column over to Dave Holden who will explain his programs. Unlike mine, which just deals with raw text files, his programs can convert both Ovation and Impression documents into HTML and can be easy altered to cope with different styles in the original document.
  707. Aaron Timbrell
  708.  
  709. ÿÿÿÿVOLUME3/ISSUE3/MODULES/INDEX.HTM Volume 3, Issue 3, Modules for Beginners
  710.  
  711.  
  712.  
  713. Modules for Beginners, Part 5: Claiming Vectors
  714. Brian Pickard
  715. Most operating systems use vectors. In RISC OS quite a few of the SWIs use vectors. This means the vectored SWI does not jump directly to its routine held in the OS ROM but RISC OS looks up a memory address held in RAM (this RAM address is the vector reserved for the particular SWI), and jumps to that routine. Usually the address held in the vector is the standard ROM routine.
  716. A designer of a module can claim a vector so that any vectored SWI can then jump to a different routine, hence altering the code for the SWI.
  717. The new routine can do one of the following:
  718. Totally replace the original ROM code, in which case control is then passed back to the caller of the SWI
  719. Do some processing then call the ROM code
  720. Call the ROM code then do some processing before control is passed back to the caller of the SWI
  721.  
  722. If the new routine replaces the ROM code this is known as intercepting the call, otherwise it is known as passing on the call.
  723. Vector Chains
  724.  
  725. So far I have been a little simplistic in the explanation of how vectors hold addresses. It is more accurate to visualise a vector as the start of a structure which contains pointers to the next claimant of the vector. This structure holds both the address of the start of the code and a pointer to the workspace for the code.
  726. Because the vector is a structure, more than one routine can claim the vector. The claimant does not have to remember the previous owners address.
  727. Vectors than be claimed and released by many pieces of software in any order. The last claimant of a vector will be the first to have its routine called, then the next most recent claimant and so on. If any of the claimants intercept a vector then all claimants more recent than this one will have there routines called, but none after this one. See the following examples.
  728. Here there are 2 claimants both of them passing on the call.
  729.  
  730. If a 3rd claimant now intercepts the call then the following happens.
  731.  
  732. Notice how this claimants interception causes a 'short circuit' so that none of the previous claimants routines are called.
  733. If a 4th claimant who passes on the call is added the following would occur.
  734.  
  735. How to Claim and Release Vectors
  736.  
  737. There are two SWI's to Claim and Release vectors called, not suprisingly, OS_Claim and OS_Release. They use registers R0 to R2 as follows.
  738. R0 = the vector number (each vector has a unique number
  739. R1 = contains the start address of the code of the claiming or releasing routin
  740. R2 = value to be passed in R12 when the routine is called (usually a pointer for workspace)
  741.  
  742. So to Claim the Mouse vector (number &1A) the following code is added in the modules initialisation.
  743.   MOV R0,#&1A             ;mouse vector numbe
  744.   ADR R1,routinestartadd% ;start address of routin
  745.   MOV R2,#0               ;R12 would have the value 0 in this cas
  746.   SWI "XOS_Claim"         ;call the SW
  747. ,
  748. To release the routine from the vector the same lines are used for R0 to R2 but then call SWI "XOS_Release".
  749. An Example
  750.  
  751. In the following example the event vector is claimed. This vector is a little more complicated in that it is called whenever an event takes place. Events are generated by several devices, including the keyboard (whenever a key is pressed or released). So using this event we can check what key has been pressed or released.
  752. Each event is numbered the keyboard event being 11 (another useful event is number 10 the mouse button change event). Look at PRM 1-152 onwards for the complete list of events.
  753. To claim this event the following code is used.
  754.   MOV R0,#&1A            ;mouse vector numbe
  755.   ADR R1,eventstartadd%  ;start address of routin
  756.   MOV R2,R12             ;R2 will have the value of R12 (module workspace
  757.   SWI "XOS_Claim"        ;call the SW
  758.  
  759. Brian Pickard
  760.  
  761. ÿÿÿÿVOLUME3/ISSUE3/NETWORKS/INDEX.HTM Volume 3, Issue 3, Networking
  762.  
  763.  
  764.  
  765. Networking
  766. Richard Walker
  767. Networking series Part5: Sharing an Internet connection
  768.  
  769. Richard Walker
  770.  
  771. This time, we are going to look at something completely new.  Suppose that you have more than one computer, yet only one Internet connection (e.g. traditional dial-up modem, cable modem or ADSL).  Wouldn't it be handy to be able to seamlessly use that connection from either computer, or even both computers at the same time?  For now, we will look at the theory behind two popular forms of Internet connection sharing.
  772. Important
  773.  
  774. Obviously, for Internet connection sharing between some computers to be possible, those computers must be connected on some kind of local area network.  This could be Ethernet (10base2, 10base5, 10baseT etc.), or something fancy like Econet, Nexus or serial cables.  A typical situation could be as shown in figure 1, where by default, only the Windows PC has access to the Internet.
  775.  
  776.  
  777. Fig. 1 - A typical small/home network setup.
  778. Note that the network must be configured correctly with TCP/IP.  See the previous articles for more information on this.
  779. Proxy servers
  780.  
  781. By setting up your own "proxy server" on the computer that has the Internet connection, you can get access to some Internet services from the other computers, via the proxy server.  A proxy server is a (server) application running, in this case, on the Windows PC.  The other (client) computers must have their web browsers configured to use the Windows PC as a proxy (usually by specifying 192.168.0.4, or the equivalent hostname, in the browser"s proxy configuration dialogue).
  782. When a client then requests a web page (e.g. http://www.riscworld.co.uk) it is passed to the proxy server application.  The proxy server software will check to see if it has an up-to-date cached copy of the page, and if it doesn"t, it will use the local (to the Windows PC) Internet connection to fetch one.  The fetched page will be stored in the proxy server"s cache, and then passed onto the requesting client computer.  Figure 2 illustrates this process.
  783.  
  784.  
  785. Fig. 2 - A simple proxy server situation.
  786. Note that the interesting bit here is that only the Windows PC has "direct" access to the Internet.  The A7000 doesn"t know anything about the Internet connection at all - it may not even exist as far as the A7000 is concerned.  The A7000 can only talk to computers on the local area network.
  787. Proxy server cacheing
  788.  
  789. Since many proxy servers cache their incoming data, re-requesting a static page will be much faster, since it will not need re-fetching over the (slow) 56k modem link.  Similarly, if, say, six computers requested the same web site, the proxy server would only need to fetch it once, and serve the cached copy out to all six.  This dramatically speeds up the performance on a shared connection, and would be useful in, for example, an educational environment.  Now, since many web pages are dynamic and/or frequently updated (e.g. http://news.bbc.co.uk) then you may think the cacheing advantages all vanish.  Not so!  Even these kind of pages usually contain some static data (e.g. a company logo, background images etc.) and so the proxy server can continue to serve those from the cache, but fetch fresh text.
  790. The quick thinkers out there may wonder why the cacheing is so special, when many browsers have a built-in disk cache.  However, the proxy works between multiple computers (and hence also multiple browsers on the same computer), so it"s like having one giant disk cache.  If a user on one computer fetches, for example, the BBCi logo, then a user on another computer will benefit from the cache if they need it.
  791. It"s worth mentioning that some web browsers have no disk cache (Oregano, Browse), or even worse, a poor disk cache which may serve up "stale" (i.e. out of date) content (Fresco).  The use of a good cacheing proxy server will dramatically improve the performance and effectiveness of these browsers.
  792. Filtering proxies
  793.  
  794. If all web access has to go through the proxy, what about filtering?  Some proxy applications are able to do this.  Typically, you supply them with list of web sites ("allow" and "deny") and/or a list of words which cause sites to be added to the "deny" list if they are present in any of the fetched text.  With a little imagination, such features could be very useful in an educational environment.  This provides pretty good filtering, since all web requests must go via the proxy, which will be on the alert!
  795. Drawbacks to proxy servers
  796.  
  797. Traditionally, proxy servers only support major protocols like HTTP and FTP.  This means that the client computers (the A7000, A5000 and Risc PC) are restricted to HTTP (for web browsing) and FTP (for file transfer).  Why is this a problem?  Well, supposing that a user wanted to use HTTPS (for secure web browsing).  The client computer would be unable to do this, since the proxy server won"t play ball, and the client cannot "see" through to the Internet (everything must go via the proxy).
  798. However, later developments in proxy servers and Internet applications themselves mean that other protocols can now be "proxied", e.g. HTTPS, Real audio/video.  If these extras are enabled on the server, and the client software (e.g. RealOne player) is appropriately configured, they will work.
  799. Some things cannot be proxied at all, due to limitations in the practicality, the proxy server, or the client software.  For example, it is not possible to use a telnet client (e.g. Nettle) on a client computer - this will only work on the Windows PC (which has the direct connection).  With a proxy-only setup, these limitations have to be lived with.  There is, however, another way...
  800. Network address translation (NAT)
  801.  
  802. This is similar to a proxy server in that it allows requests from multiple computers to be dealt with by one, but it goes about it in a much lower level way.  Since all network "traffic" is split into "packets", complete with sender and destination information (IP addresses), it is possible for these to be examined and modified slightly by some software.  As these modifications are so low level, there is very little configuration required on each client, and the trick works with just about every Internet client application out there.
  803.  
  804.  
  805. Fig. 3 - A simple NAT situation.
  806. As with the proxy server setup, the A7000 cannot see beyond the local network.  However, if it is configured to use the Windows PC as it"s "default route" (see article 2), it will fire off any non-local (i.e. non-192.168.x.y IP address range - remember, this is determined by the "netmask") packets to the Windows PC.  The NAT software on the Windows PC will analyse these packets and send them out to their destination, but making them look like they originated from the Windows PC.  The remote Internet server will eventually respond, and send packets back to the Windows PC.  The Windows PC will have to work out which packets were for the A7000, and forward them on to it (similarly for the other clients).
  807. The result of NAT is that each computer on the local network that does not have a direct connection to the Internet (the A7000, A5000 and Risc PC) actually appears to have one!  From an application point of view, those computers are the same as the Windows PC.
  808. It is perhaps worth mentioning that the "Internet Connection Sharing" software built into Windows 98SE, Me, 2000 and XP uses NAT.
  809. Using both
  810.  
  811. For a home setup, where you may not want/need web page filtering, it makes sense to go for a NAT solution rather than a proxy server.  However, what about both?  Remember that the proxy server has some big plus points for web browsing (namely the page cacheing).  Using both allows web browsing to be cached between all the computers, yet applications which cannot easily be proxied (e.g. telnet, email fetching).
  812. Security
  813.  
  814. As we know, the computers on the local network (apart from the Windows PC) are not directly connected to the Internet.  A canny advantage of this is that any computers on the Internet cannot see them!  To a web site or schoolboy-cracker, you have only one computer connected to the Internet, and that is the Windows PC.  The other computers are effectively behind a "firewall".
  815. There is also a slight disadvantage here.  If, for example, you want to run a web server on the A7000, and have it accessible from anywhere on the Internet, you can"t.  Anything which requires a connection that is initiated from the Internet (rather than the local network) won"t work.  However, there is a solution to this problem.  The NAT computer (which is directly connected to the Internet, remember) can often be configured to listen for, say, web requests, and if it gets any, pass them on to the A7000.  It is therefore possible to use the NAT computer to gain access to a number of the computers on the local network, if this is explicitly configured.
  816. Provided that the computer with the Internet connection is set up securely, you can confidently add more computers to the local network, without worrying about nasty attacks.  It would perhaps be sensible to ensure that the computer with the Internet connection is not running Windows!
  817. Signing off
  818.  
  819. Next time, we will look at the practical side of things: what software and hardware may be appropriate, and how to set it up.  As usual, please get in touch with The Editor or myself if you want to make suggestions or raise queries regarding this series.  In particular for this article, the descriptions of proxying and NAT were rather high-level.  If there is demand, they could be described at a much lower level.
  820.  
  821. Richard Walker
  822.  
  823. ÿÿÿÿVOLUME3/ISSUE3/PD/INDEX.HTM Volume 3, Issue 3, PD World
  824.  
  825.  
  826.  
  827.  
  828. PD World
  829. Paul Brett with the latest PD and freeware roundup.
  830. There are some very interesting PD and Freeware applications in the pipe line at the moment. Perhaps the most interesting project going on at the moment is 
  831. AWSwitch - Martin Würthner
  832.  
  833. Normally, ArtWorks files are rendered using 16 levels of anti-aliasing. For most applications, in particular for on-screen viewing, this is quite adequate. However, for high-quality bitmap output, this is not optimal. This little utility allows you to switch between 16, 64 and 128 levels of anti-aliasing. Please note that using 64 or 128 levels of anti-aliasing as opposed to 16 slows down the rendering of ArtWorks files by about 10% - this is the price for the higher quality and this is also the reason why the standard number of anti-aliasing levels is still 16. The difference between 16 and 64 is quite noticeable when you magnify the output, but at normal screen resolution, it is difficult to see. Users may like to know that this program not only improves anti-aliasing in ArtWorks, but also works with DrawWorks.
  834. Google Toolbar - Andrew Poole
  835.  
  836. The Google Toolbar for RISC OS is an attempt at making the Google Toolbar, which is an add on to Internet Explorer which allows the user to search the Internet from any Internet Explorer window without going to the Google website, available for the RISC OS platform. The Google Toolbar should run on any RISC OS 3 machine, but to get the most out of it, you will need an Internet connection on the RISC OS machine, and a web browser.  Google has been tested with as many RISC OS web browsers a
  837. possible, but there are currently problems with Fresco. You will also need a copy of !JFShared installed on your machine.  You can get this from 
  838. NewAlarm - Harriet Bazley
  839.  
  840. NewAlarm is a replacement for the existing RISC OS !Alarm program. Unlike !Alarm NewAlarm tells the time in a more vague way, so instead of a totally accurate, but hard to read, digital display, you get "its roughly twenty past three". Although not a new program I only found it recently by accident, which is why it's featured in this issue.
  841. PassWord - Sensible Software
  842.  
  843. Password enables pupils to take responsibility for learning their own spelling. They use the LOOK COVER WRITE CHECK process to learn how to spell words and print out results for their immediate use. Their password file is also kept on disc. This tracks their progress as more words are added to their vocabulary, as well as repeating words from previous sessions randomly until they can spell them perfectly three times in a row.
  844.  
  845. TempTEd - Sensible Software
  846.  
  847. TempTEd, was created to allow the easy modification of text strings in a template file in bulk. It was inspired by the possibility in ResEdit to export and import texts in the form of a Messages file. This program was expressly developed to facilitate translation of template files in another language, but users are free to explore other useful applications.
  848.  
  849. VICE (Versatile Commodore 8-bit Emulator) - Various
  850.  
  851. VICE is a set of applications design to emulate a wide variety of early 8 bit Commodore computers including the Vic 20 (my first colour computer - ED), the PET, the C64 and the C128. Of course you will need programs to run on these emulators but a quick hunt on the internet should turn up a great deal of freely available games/demos and applications.
  852.  
  853. That's it from me for this issue, as usual if you have any PD, Freeware or Shareware applications you would like featured why not get in touch with the 
  854. Paul Brett
  855.  
  856.  
  857.  
  858. ÿÿÿÿVOLUME3/ISSUE3/POWERBASE/INDEX.HTM Volume 3, Issue 3, Powerbase
  859.  
  860.  
  861.  
  862.  
  863.  
  864. Using Powerbase - Part 3
  865. Derek Haslam
  866. First of all I must apologise to readers for the long delay between the second article of this series and the present one. I thought I'd missed the deadlines for two issues; I now find that it's three. Thank you Les Chant (Letters, Vol.3 Issue 2) for jogging my memory!
  867. Our on-going Powerbase tutorial continues with some further refinements of the MusicBase database and will then go into more detail about the query language used by the program. The version of MusicBase used is in the zip file 
  868. Using validation tables to constrain data-entry
  869. The fields in MusicBase called Title, Artists and Label are all of type Unrestricted; they will allow us to enter any printable character. The user menu associated with the Medium field is also of Unrestricted type but can be made to contain only a limited range of oft-repeated character strings provided we always enter data via the menu. There is, however, nothing to stop us typing into the field directly. Some restrictions can be placed on the type of character a field will accept by redefining it as Uppercase or Numeric but there are many instances where much tighter control over input is needed. This can be achieved by linking the field to a validation table which contains a list of the allowed values for the field. Validation tables have another important use in allowing us to code data. This lets us associate lengthy items of data with short codes of as little as one character. The codes can be entered very quickly whilst reports can be made to include the complete data.
  870. We're going to add a new field called 'Category' to MusicBase. This will be used to classify works as Orchestral, Piano solo, Solo voice, Opera etc. (or, if you prefer, Heavy metal, Rap, Reggae etc.) and will use a validation table to force the data to one of these categories, allowing  the category to be typed in as a two-letter code. We can't do this from Utilites=>Alter format on the iconbar menu as we did for the user menu, Print and Exit buttons and for the scrollable list; we need to rebuild the database. Why is that? Look inside the !MusicBase directory and you'll see a file called Database. All data which gets typed into ordinary editable fields (but not scrollable lists) is stored in this file in the form of fixed-length records. The fixed record length makes it possible to find and retrieve a record very quickly but has the disadvantage that if we wish to add or remove a field, or merely alter it to accept more characters, the record length will change and the database file will need rebuilding. Button fields, scrollable lists, and some other types which we'll meet eventually, don't store anything in the Database file and are therefore not subject to such restrictions; they may be added or removed via Alter format
  871. From the iconbar Utilites submenu choose Rebuild database. The Reformat database window will open:-
  872.  
  873.  
  874. Fig.1 The reformat window
  875. It is worth stressing at this point that the Reformat utility builds a completely new database leaving your original database intact. It is therefore a very safe procedure which you need have no qualms about using. The default name supplied is NewFormat and you can, of course change this if you wish. The database icon at the bottom left of the window is then dragged to a suitable directory. If you want the new database to still be called MusicBase you will have to drag it to a different directory from the one containing the present MusicBase, otherwise the reformat will not proceed: you cannot overwrite your old database using this utility. I'm going to call it NewMusic so that it can reside in the same directory as the old MusicBase. (There's no need to include the '!' - Powerbase will add it for you.)
  876. When you drop the database icon in the directory the now-familiar record-design screen with the blue gri
  877. appears. Choose Create field from the main menu. The field class we want is Editable (already selected) and from the pop-up menu we will choose Uppercase. (We don't have to but it demonstrates the other form of input-control — restricting the range of characters — referred to earlier.) The Descriptor can be 'Category', the Tag 'CAT' and the Data length is 2. Click Create and drag the field to a convenient place, then choose Quit design from the main menu.
  878. Brief disc activity, during which a small grey window tells you what's going on, eventually leaves you with the new database open:-
  879.  
  880.  
  881. Fig.2 The modified database NewMusic
  882. The new field will only accept uppercase letters, numerals and the space and full-stop characters. Try it out: notice that the Caps Lock light on the keyboard comes on whenever the caret enters this field and goes off again when it is moved to another field. You can turn Caps Lock off from the keyboard but you still won't be able to enter any other characters than the ones listed above.
  883. The next step is to construct the validation table which will further restrict data in this field to the values on a defined list. From the main menu choose Validation=>Create table. The table design window (see Fig.3) is displayed. We can call the table anything we like, provided it's not more than 10 letters, but 'Category' will do. 10 rows should be enough and we need to define two columns, one for the code and one for the longer description of the category. The first of these is two characters wide and 20 should be enough for the second. Column headings are optional and, since the heading isn't allowed to be wider than the column, it seems hardly worthwhile to give the code a heading. 'Description' will do for the second column. We can change the colours of the headings and table body by selecting Foreground or Background and clicking on the Heading and Data icons which will cycle through the 16 standard desktop colours. The window might then look like this:-
  884.  
  885.  
  886. Fig.3 Specifying the design for a validation table
  887. Click Create. The blank table will appear and you can start entering data right away. Here it is with some data entered:-
  888.  
  889.  
  890.  
  891. Fig.4 How the completed table might look
  892. The final step is to link the table to the Category field. Click MENU over the field and choose Link to table from the Field submenu. The Link window is displayed:-
  893.  
  894.  
  895. Fig.5 Linking the table to a database field
  896. The table name Category is already displayed (since it's the only table present) and the column to link to is the first, which is numbered 0, so all we need do is select the Linked to table option button and click OK.
  897. You will see that the foreground colour of the Category field is now green: this is Powerbase's way of indicating that a field is subject to table validation. Try typing two-letter codes into the field. If the code exists in the first column of the validation table all is well. If it doesn't exist the code will appear initially to be accepted, but any attempt to move the caret to another field, or to display a different record, results in the message '[input] is not on Category validation list'. When OK is clicked the old contents of the field are restored. Because of this you should normally leave at least one row of your validation table blank so that the linked data field can be left blank if desired.
  898. New users sometimes get into a tangle with validation tables so that they can't change the contents of the validated field, move to a new field or record or, apparently do anything at all except keep on producing the 'Not on validation list' message! If you always include a blank entry in the table column containing the validation list you can get control of the situation by deleting whatever offending entry is in the field. If you do get stuck you can go to the iconbar menu and display the Preferences window. One of the option buttons down the left-hand side is called Validate input and you can deselect this and click Accept to temporarily turn validation off. You can then either add the missing entry to the table or click MENU over the field, go to the Link window, and unlink the field from the validation table by deselecting Linked to field and clicking OK
  899. With a valid code in the field, try double-clicking on it with SELECT. A small window is displayed which shows not only the code but the associated data in the other column of the table. You can make this window pop up automatically (like the user menu) if you wish by selecting Display linked table data in the Preferences window. There's another useful feature: place the caret in the Category field and click Table (if using the tool-pane) or Show values (if using the keypad). The entire table is displayed. It can also be displayed by choosing the table name from the Validation submenu.
  900. Now make a print selection which includes Category and print a report. Only the codes of the latter field are printed. If, however, you go to the Print options window and select Expand codes then print the report again you will find that the descriptions from the second column of the validation table are printed instead of the codes. This is exceedingly useful! In the Further Education college where I used to teach we made extensive use of validation tables and coded data-entry for such things as courses, subjects studied, names of tutors and schools of origin. The people entering the data soon became familiar with the codes so that data entry was rapid and trapped against (most!) errors. Those who actually used reports based on the data were not necessarily familiar with the codes but could be given lists in which the information was printed in full.
  901. Also useful is the Replace on entry feature. To illustrate this we will construct another validation table to be linked to the Label field. Call this one 'Label'. Once again we require two columns, of widths 2 and 20 characters respectively, and 10 rows. The first column contains coded data for the record label, the second contains the full name of the label. When the table is filled in it might look something like this:-
  902.  
  903.  
  904. Fig.6 The new table with data entered
  905. Click MENU over the Label field in the database and bring up the Link window as you did for the Category field. The displayed table name will be 'Category' so change it to 'Label' by clicking the down arrow or by choosing from the pop-up menu. The link, as before, is to column 0 but this time select the Replace on entry button. Column 1 is offered as the default replacement and this is the one we want so just select Linked to table and click OK:-
  906.  
  907.  
  908. Fig.7 The Link window should look like this
  909. The Label field will now be green. When you enter a code from the first column of the table you should find that pressing Return or clicking the mouse in another field causes the code to be replaced by the corresponding text in the second column, eg. entering 'DG' followed by Return results in 'DG' being replaced by 'Deutsche Grammofon'. You could, in fact type the latter in full and the field would accept it: both the code or the replacement string are valid entries.
  910. A database's validation tables are stored in a subdirectory within the database called ValTables and will be automatically saved there when the database is closed. When a database is opened, validation tables are automatically loaded if they are linked to data fields. Since a table has to be in memory in order to link it to a field what do you do if, having created the table, you close the database without establishing the link? There's an easy answer to this. Look on the Validation submenu and you'll see an entry Show files which will open the ValTables directory. The table can then be loaded by double-clicking on the file with SELECT.
  911. More could be said about validation tables. They are one of the features of Powerbase which set it apart from other non-relational databases. They can be sorted on any column, printed, saved for transferring to another database, modified etc. However, we must move on! Interested readers are referred to Chapter 5 of the main manual, or to the file Ch05-Valid in the DOCS archive.
  912. More about queries
  913. So far we have said little about the method of querying the database to get at all records which match a particular criterion or set of criteria; in fact we haven't provided an example since the first article. Since this is what database users probably do more of than anything else it's high time the omission was remedied. Just to remind you of the general idea bring up the main menu and choose Print (or press the Print key on the keyboard) and type MED=CD into the writable icon of the Match window:-
  914.  
  915.  
  916. Fig.8 Entering a search formula, or query, into the Match window
  917. Clicking Print then produces a list of all records which match the search formula, i.e. all which have 'CD' in the Medium field (whose tag is MED). Oh, you forgot to choose which fields to print? You click ADJUST over them, remember? If you fail to do that Powerbase will list the primary key field for each matching record as a sensible default. Suppose we want the report to include all CDs and LPs? We could do that by entering:-
  918.  
  919.  
  920. MED=CD OR MED=LP
  921.  
  922. Note the spaces on either side of OR; they are essential. This method of querying is fine when only a couple of 'targets' are to be matched but it can quickly become clumsy for three or more:-
  923.  
  924.  
  925. MED=CD OR MED=LP OR MED=Cassette
  926.  
  927. See what I mean? There is, however, a shorter way. The search formula:-
  928.  
  929.  
  930. MED=CD,LP,Cassette
  931.  
  932. produces the same result as the longer version. Suppose now that we want to extract all opera recordings on LP. We can do that with:-
  933.  
  934.  
  935. MED=CD AND CAT=OP
  936.  
  937. In other words, the only records which will appear in the report are those which have 'CD' in the Medium field and 'OP' in the Category field: simply matching one or the other isn't good enough. OK, how do we combine both OR and AND in a search formula to list all opera recordings which are on either CD or LP? It looks straightforward; how about:-
  938.  
  939.  
  940. MED=CD OR MED=LP AND CAT=OP
  941.  
  942. Well, this sort of thing might give you the correct selection of records but you shouldn't depend on it! Read the above carefully or, better still, ask someone else to read it and ask whether the logic is clear. This is one of the cases where the resulting report won't be what you want. Each OR and AND is interpreted as it is encountered so what you would actually get from the above formula is a list of all CDs (whether operatic or not) and all operatic LPs. In other words the first criterion (MED=CD) gets matched and, since the next item in the formula is an OR, Powerbase prints the record regardless. When the next part of the query (MED=LP) is matched, Powerbase sees the AND, knows there's another criterion to be met, and only prints the record if CAT=OP. To make the logic clear we need parentheses:-
  943.  
  944.  
  945. (MED=CD OR MED=LP) AND CAT=OP
  946.  
  947. You might like to explore the matter further using the sample database Elements. If you don't already have this you will find a copy in the zip file 
  948. GP=3 OR GP=4 AND NAME=$IUM
  949.  
  950. The last part of this formula may look a little strange: the $ is a multi-character "wild card" and the search criterion implied is "any name ending in IUM". The six records printed include one (BORON) which doesn't have such an ending. Try again with the groups reversed:-
  951.  
  952.  
  953. GP=4 OR GP=3 AND NAME=$IUM
  954.  
  955. (Tip: Make sure the record window has the input focus and type Ctrl-O. This retrieves the old search formula which you can then edit.
  956. This time nine records are printed, three of which don't end in IUM (CARBON, LEAD and TIN), and BORON is not included! Now try:-
  957.  
  958.  
  959. (GP=3 OR GP=4) AND NAME=$IUM
  960. The five elements printed all have names ending in IUM and exactly the same list is produced if the group numbers are swapped over.
  961. Performing calculations
  962. To explore this aspect of Powerbase we need a different database. We will use a very simple example which records the names of school students and their percentage marks in examinations in English, Maths and Science. The construction of this database (and a quick method of getting some data into it) will now be described to give you further practice but, if you're feeling lazy, you can use the completed example 
  963. Constructing the Marks database
  964. We need 4 fields:
  965.             Descriptor       Tag         Type           Data lengt
  966.             Name             NAME        Unrestricted       2
  967.             English          ENG         Numeric             
  968.             Maths            MAT         Numeric             
  969.             Science          SCI         Numeric             
  970.  
  971. So it's:
  972. Close any open databas
  973. Click on Powerbase icon, enter name "!Marks" and drag to a suitable directory
  974. Click MENU over the main window and choose Create field
  975. Enter the descriptor, tag and field length for the first field and click Create
  976. Create the other three fields in the same way, making sure you choose type 'Numeric' before clicking Create. (If you forget, just double-click on the field to bring up the dialogue box again, change the field type and click Update field.
  977. Arrange the fields in an aesthetically-pleasing way
  978. Choose Default database from the main menu
  979.  
  980. Data entry - the lazy way
  981. Now to get some data into the fields without a lot of tedious typing. The zip fil
  982.  
  983.  
  984.  
  985. Fig.9 CSV import window
  986. This gives us a great deal of control over how the imported data will be handled but, in the present case, we can simply accept all the defaults and click Import. The result will be a functioning database containing 12 records. Note that the names are in alphabetical order in the database even though they aren't in the CSV file. In fact, for reasons we need not go into just now, it's best if the source file doesn't present the records in primary key order: the more jumbled up they are the better, especially if a large number of records is being imported.
  987. Select all four fields (Ctrl-A provides a quick way of doing this) and print all records. What else would we like to see in this report? Why, the average for each subject, of course! Close the report window then, with the fields still selected, choose Print=>Numeric fields from the main menu. The Numeric fields window:-
  988.  
  989.  
  990. Fig.10 The numeric fields window
  991. consists mainly of Check (tick) boxes which only become "live" when the associated data fields are selected for printing. There is a row of 6 boxes for each numeric field and they may be selected in order to include certain information at the foot of the report. Since we want averages for each of the three columns of numbers we click on Mean for each of the three fields and then Close the window. Now print the report again and see the difference. You might want the standard deviation of the sets of marks also, in which case tick the boxes under StDev. Max and Min could also be ticked to tell us the highest and lowest marks. You might care to confirm these last two with the aid of Powerbase's sort function. Click MENU over a column of marks in the report and choose Sort. The sort may be in either ascending or descending order. Compare the first and last numbers in the column with the printed Max and Min.
  992. What about the average of the 3 marks for each student? If we'd had the forethought to put a self-calculating field on the record those averages would have been automatically worked out for us but, oh dear, we didn't did we? We'll remedy that in a little while but for the moment let's see how to print the required averages even though there's no field for them. From the main menu choose Print=>Extra calculations. The resulting window, with the required information entered, is shown below:-
  993.  
  994.  
  995. Fig.11 The extra calculations window
  996. The formula has been set up to add the 3 marks and perform integer division by 3. If you don't enter a heading the formula itself will appear as a heading. That's usually undesirable because the formula is too long and not always self-explanatory. Make sure all the fields are still selected and click on Include. When you reprint the report it should look like this:-
  997.  
  998.  
  999. Fig.12 Report with extra column giving personal averages
  1000. To end this article we will add a self-calculating field to the database so that the above calculation will be performed automatically. This involves rebuilding the database. We did that with the Music database at the beginning of the article and you might need to refer back to the procedure. Only the essential differences are detailed here:-
  1001. The field class required is Computed and the individual type is Calculated
  1002. Enter 'Average', 'AVGE' and 3 as the Descriptor, Tag and Length and click Create
  1003. Choose Quit design from the main menu
  1004.  
  1005. The calculation formula must now be entered into the new field. When you move the pointer over this field it changes into a "pocket calculator". Click MENU and choose Field=>Formula to display the Calculation window:-
  1006.  
  1007.  
  1008. Fig.13 The calculation window with the formula entered
  1009. Note that the calculation is exactly the same as the one used previously. To make the calculation retrospective you should select Recalculate existing records before clicking OK, otherwise the field will only be updated for new records or when a change is made to one of the marks in an existing record. You can't place the caret in the calculated field to edit it directly but you can include it in a print selection. Select all four fields and print a report and you will see the same averages as before in the final column. Moreover, the new field is itself of numeric type and therefore has its own row of check-boxes in the Numeric fields window. If these are ticked you can include the same data in the report for the Calculated field as for the three individual mark fields.   
  1010. Next time
  1011. In the next article we will look at:
  1012. Associating string operations and user functions with Computed field
  1013. Using subsidiary indexe
  1014. Attaching external files to database record
  1015.  
  1016. Derek Haslam
  1017.  
  1018.  
  1019. ÿÿÿÿVOLUME3/ISSUE3/ROLAGM/INDEX.HTM Volume 3, Issue 3, The RISCOS Ltd AGM
  1020.  
  1021.  
  1022.  
  1023. The RISCOS Ltd AGM
  1024. Aaron Timbrell went along (as a shareholder)
  1025. Well its time for the RISCOS Ltd AGM (Annual General meeting) yet again. This year the event was held at the Quy Mill Hotel in Cambridge, so since that isn't too far I decided to pop along to see what was going to happen.
  1026. The trip to Cambridge takes about an hour and half, a bit more if you include all the roadworks on both the M25 and the M11. I picked up Graeme Barnes (the author of VirtualAcorn and Red Squirrel) on the way through Cambridge and we arrived in plenty of time for the meeting proper. A number of shareholders were unable to attend on the day for various reasons, so we had no representatives from Pace, Castle Technology or RiscStation. The only hardware manufacturer who showed up was MicroDigital, and they aren't even a RISCOS Ltd shareholder. Still there were quite a few famous faces from the RISC OS community in evidence including Paul Richardson from ExpLAN, Paul Beverley from Archive and of course myself and Dave Holden.
  1027. The meeting was opened by Paul Middleton who is the RISCOS Ltd managing director. He introduced the annual report and explained some of the more important points to shareholders. These included sales figures for the Select scheme, which currently has 846 subscribers and details on the numbers of RISC OS Foundation members. We were also given some sales figures for the last 8 months as these fall outside the time period covered by the annual report. These showed a steady stream of sales for RISC OS 4 upgrades. Paul Middleton did say that he felt the number of users left using earlier versions of RISC OS who might upgrade to RISC OS 4 was now relatively low. It was also explained that sales of new machines from the hardware manufacturers was much lower than expected. In my view the Omega will soon change that.
  1028. At this point some issues were raised from the floor by Paul Richardson and it was agreed by all present that it wasn't possible for the company to respond at the AGM, so it was decided to set up a suitable process that could be used to deal with those issues at a later date.
  1029. We then broke for tea, or coffee if you were quick enough. This gave shareholders a chance to have a play with the two working Omega prototypes that were on display.
  1030. After this short break Paul Middleton continued the AGM by showing some of his plans for the future. Firstly he covered the new version of Select that is due in the next couple of months. This includes a number of upgrades including:
  1031. Handling of CMYK sprites in !Pain
  1032. Local transparency and a proper crop tool for !Pain
  1033. A PNG developer ki
  1034. Pinboard support for drawfile
  1035. Proper transparency for bitmap image
  1036. A new version of Repla
  1037.  
  1038. Obviously this isn't a complete list and Paul did make it clear that he had other things up his sleeve which he couldn't talk about. He also explained that a large number of commercial developers had still not signed up for Select and that RISCOS Ltd couldn't afford so simply give them copies of Select to experiment with. I think this is a little short sighted, if you want people to support your OS then give them a copy, and how much does a CD actually cost?
  1039. On a happy note it was announced that the sources to the front end of !Printers+ are to be made available to anyone who wants to write further printer drivers for RISC OS.
  1040. Paul then went on to cover other developments. The RON (RISC OS On Netbook) project has been put on hold due to a lack of resources. Psion have offered to help RISC OS Limited with this if RISCOS Ltd takes the current stocks of around 1000 units of the Netbook. However there is simply not the money available to purchase these machines.
  1041. Next Paul spoke about the 32 bit issue. He explained that although a 32 bit RISC OS will be necessary at some future point it isn't necessary at present. It seems that RISCOS Ltd approached Pace at the start of the year to see how much it would cost to licence the Pace 32 bit RISC OS, the figure required was well beyond that available to RISCOS Ltd. The hardware manufacturers declined to get involved with a proposed project to produce a 32 bit RISC OS by RISCOS Ltd. This would have cost around £90,000.
  1042. A 32 bit RISC OS comes with a number of problems attached. Firstly a lot of current software will not run on a 32 bit RISC OS. Software written in C would need to be re-compiled and finding the sources for some older products could be impossible. A lot of assembler code would have to be re-written, and that needs programmers. Of course the Omega addresses these problems using the ArmTwister technology.
  1043. The meeting then covered some other points, Paul Middleton stressed that RISCOS Ltd is independent of all the hardware manufacturers and for some reason popped up a slide saying that RISCOS Ltd isn't controlled by Castle Technology, rather odd since Castle were not even present, still its nice to know that the company is independent. Paul then went on to cover investment in RISCOS Ltd and said that one of the reasons that he had not been able to find further investors was that they were put off by "troublemaking" from the current investors. How the people who actually own the company could be "troublesome" wasn't explained.
  1044. The AGM soon turned to the subject of VirtualAcorn. This started to get a little heated and Paul Beverley decided that it was time to leave and to be honest both Dave Holden and I had to agree. Before we left we handed out copies of a discussion document about VirtualAcorn and left everyone else to get on with it.
  1045. Dave and I popped along to the bar for a swift shandy and then set up camp outside the meeting with a couple of laptops running VirtualAcorn. The discussion inside continued for 45 minutes or so and sounded as though it did get exceptionally heated at one point. However in the end it was decided that RISCOS Ltd would examine the possibility of licensing RISC OS for use with VirtualAcorn.
  1046. Well that just about sums up the AGM, however there were a few odd points that are worth noting. Firstly shareholders were not asked to vote on anything, not even a vote to accept the annual report itself, this seems a little odd. Secondly the meeting was kept open to the public all the way through, even while some quite detailed financial information was being discussed. Still that's the Chairmans prerogative. So there we have it, another AGM over with, lets see what the next RISCOS Ltd annual report holds in store.
  1047. Aaron Timbrell
  1048.  
  1049. ÿÿÿÿVOLUME3/ISSUE3/SCRIBBLE/INDEX.HTM Volume 3, Issue 3, Creating PDF files with Scribble
  1050.  
  1051.  
  1052.  
  1053. Creating PDF files with Scribble 0.1
  1054. Gavin Wraith introduces the Scribble application
  1055.  
  1056. Why PDF
  1057. I expect most readers know that HTML was invented by Tim Berners-Lee as a device for separating content from appearance. The writer of a web page determines its content; the reader decides its appearance (by choice of browser settings).  If you are sending information to another computer, how do you know what kind of graphics it supports? The original plan for the WWW intended that even a blind person should be able to read, that is hear, a web page. It follows that all those HTML tags for changing font, or background colours, or some other visual aspect, are not really part of the original plan. They were added later, often the result of commercial considerations - browser wars in which each side exploited the ignorance of a public to whom the idea of separating content from appearance was too abstract to be entertained.  If you paint a picture or print out a photograph and show it to different people (sighted, of course) will they not see the same thing? Metaphysics and physiology to one side, the answer is yes, they will. But if the picture has to be transmitted digitally, to those people's various computers, what then?
  1058. When the unsuitability of web pages for transmitting visual appearances had sunk in, Adobe, famed for its page-description language, PostScript, came up with PDF. This is a file format that blends some of the ideas of HTML, such as links, with those of desktop publishing, where you want to ensure that when you print out hardcopy you will always get the same result, at least if the printers are of adequate capability. So if you want to send somebody a document where the visual aspect must be preserved precisely, do not use HTML, use PDF.
  1059. Why Scribble
  1060. Unfortunately, Adobe's software for viewing PDF files, Acrobat Reader, has never been implemented for Risc OS. Instead, for Risc OS we have:
  1061. !RiScript, from Cerilica (http://www.cerilica.com)
  1062. !PDF (free) maintained by Colin Granville (http://www.pdf.iconbar.com/
  1063.  
  1064. Up till now the only ways to create a PDF file on a RISC OS machine have been:
  1065. Convert a PostScript file using !ps2pdf with !Ghostscrip
  1066. Use the shareware Perl program, txt2pdf, from SANFACE software                    (http://www.sanface.com). You need Perl for this, of course, which has been ported to RISC OS by Nicholas Clark (http://plum.flirble.org/~nick/). There is a wimp frontend, !txt2pdf, by Joern-Erik LEO Burkert, which requires Justin Fletcher's JFShared library
  1067.  
  1068. But now you can use !Scribble, provided on this CD, which I wrote earlier this year. This application is entirely straightforward to use. Once the filing system has seen !Scribble (or !Scribble has been filer_booted), the filetype Scrib
  1069.  
  1070.  
  1071. is defined (&1ac). To create a PDF file you must first describe it in a text file, using an editor. The description is in a simple language that I propose to call Scribble, which we will discuss below. Save the description, giving it filetype Scrib, and then double click the saved file's icon. The PDF file(s) will be created. Their filenames are determined by their descriptions. You can create lots of PDF files at once, possibly linked to each other, with a single Scrib file.
  1072.  
  1073. To view the results you need !RiScript or !PDF. !RiScript, rather than loading a file into memory and discarding it when the viewer window is closed, keeps the file open until you quit !RiScript. For this reason, if you are using !RiScript to debug a Scrib file, you should click the square button on !RiScript's toolbar to clear the display before double clicking on the updated Scrib file
  1074. The Scribble language
  1075. Hello World example
  1076. Let us have a look at a very simple Scribble file, that bears the hoary message Hello World.
  1077. -- world      a simple example
  1078. mydoc = BEGIN (arg[1].."/pdf")
  1079. mydoc:begin_page (A6.width,A6.height)
  1080. times_roman = mydoc:findfont ("Times-Roman", "host", 0)
  1081. mydoc:setfont(times_roman, 18)
  1082. mydoc:set_text_pos (A6.width/3,A6.height/1.5)
  1083. mydoc:show "Hello World"
  1084. mydoc:END ()
  1085. We have used blue to indicate those words which are not part of the Scribble language but can be chosen by you. The first line is a comment. It has no effect on the output PDF file. A comment starts with two consecutive minus signs (--) and continues to the end of the line. The next line creates an embryo PDF document, which we have chosen to call mydoc. The argument to BEGIN determines the filename that mydoc is eventually to be saved to. In this case we have decided to call it the same name as that of the Scribble file containing the description, but with /pdf appended on the end. In this case the leafname of the file is world, so the output will be saved to world/pdf in the same directory. The expression arg[1] denotes the full filename of the current Scribble file and the two full stops (..) denote the operator for concatenating strings.
  1086.  
  1087. Observe that subsequent instances of mydoc occur followed immediately by a colon (:) followed immediately by another word. These words are the names of functions called document-methods. In this case we have methods begin_page, findfont, setfont, set_text_pos, show, END. The arguments to a method are enclosed in parentheses, but these may be omitted if there is a single argument which is a literal string, as in the penultimate line. Learning to describe a PDF file with Scribble comes down to understanding a list of 78 methods and what their arguments can be. The arguments to begin_page determine the size of the page, measured in DTP points, i.e. 1/72 inches. Certain sizes are predefined, namely A0, A1, A2, A3, A4, A5, A6, B5, Letter, Legal, Ledger. The findfont method returns a font-handle, which we have called times_roman, for use in other methods such as setfont. The arguments to findfont are a font name, an encoding and an embedding flag. Because of the varieties of different sorts of font to be found, these arguments can be complicated, but for Risc OS users it is best to vary only the first argument, from among the following standard fonts.
  1088. Courie
  1089. Courier-Bol
  1090. Courier-Obliqu
  1091. Courier-BoldObliqu
  1092. Helvetic
  1093. Helvetica-Bol
  1094. Helvetica-Obliqu
  1095. Helvetica-BoldObliqu
  1096. Times-Roma
  1097. Times-Bol
  1098. Times-Itali
  1099. Times-BoldItali
  1100. Symbo
  1101. ZapfDingbat
  1102.  
  1103. The setfont method takes a font-handle and a font-size in points. The set_text_pos takes two coordinates as arguments. The origin is at the bottom left of the page, but the coordinate system can be transformed in various ways. The show method takes a string as an argument. Finally the END method takes no arguments. It closes the page and saves the document as a PDF file.
  1104. Two page example
  1105. You can define various documents simultaneously, interweaving the methods for each. Here is a scribble program, page, that creates two PDF files, page1 and page2, with a link (a red star in a box) in page1 that launches page2.
  1106. x,y = BEGIN (arg[1].."1"), BEGIN (arg[1].."2") 
  1107. x:begin_page(A5.width,A5.height)
  1108. y:begin_page(A5.width,A5.height)
  1109. x.font = x:findfont("Courier","host",0)
  1110. y.font = y:findfont("Courier","host",0)
  1111. x:setfont(x.font,20)
  1112. y:setfont(y.font,20)
  1113. x:show_xy("This is page1.",10,A5.height*0.9)
  1114. y:show_xy("This is page2.",10,A5.height*0.9)
  1115. x:continue_text("Click red * below")
  1116. y:END()
  1117. x:continue_text("to go to page2.")
  1118. x:setcolor("both","rgb",1,0,0,0) -- red
  1119. x:show_boxed("*",10,A5.height*0.7,30,20,"center","")
  1120. x:add_launchlink(10,A5.height*0.7,40,A5.height*0.8,"page2")
  1121. x:END ()
  1122. The first line may be a surprise to those not used to multiple assignment languages. We define two documents x and y in the same line. Of course, we could have used two separate lines. In the 4-th and 5-th lines we defined x.font and y.font to be font handles for x and y. The interweaving of the method calls for x and y is entirely arbitrary, chosen only to make the point. It would have been better style to keep them separate.
  1123. Chequerboard inverted in a circle
  1124.  
  1125. The inverse of a point P in a circle of radius  and centre O is the point Q on the line OP for which OP.OQ is . The inverse of a figure is got by inverting each point of it. Inverses of circles and lines (circles of infinite radius) are circles and lines. Inversion leaves angles of intersection unchanged. The picture above shows the inversion of a chequerboard.
  1126. Here is a short Scribble program that produces this beautiful graphical result.
  1127. RESOLUTION, N = 512, 8
  1128. z = BEGIN (arg[1].."/pdf")
  1129. z:begin_page(RESOLUTION, RESOLUTION)
  1130. z:translate(RESOLUTION/2, RESOLUTION/2)
  1131. z:scale(RESOLUTION/8,RESOLUTION/8)
  1132. z:setcolor("fill","rgb",0,0.5,0.5,0)
  1133. z:set_parameter("fillrule","evenodd")
  1134. x = N
  1135. while x >= -N do
  1136.   if x ~= 0 then 
  1137.    z:circle(2/x,0,2/abs(x))
  1138.    z:circle(0,2/x,2/abs(x))
  1139.   end -- if
  1140.   x = x - 1
  1141. end -- while
  1142. z:fill()
  1143. z:END () 
  1144.  
  1145. King Arthur
  1146. A colourful nursery rhyme for our last example - here is a Scribble description.
  1147. verse1 = {
  1148.           "When good king Arthur ruled the land",
  1149.           "he was a goodly king.",
  1150.           "He stole three pecks of barley rye",
  1151.           "to make a bag pudding." 
  1152.         } 
  1153.         
  1154. verse2 = {
  1155.            "A bag pudding the king did make",
  1156.            "and stuffed it full of plums,",
  1157.            "and in it put great lumps of fat",
  1158.            "as big as my two thumbs."
  1159.          } 
  1160.          
  1161. verse3 = {
  1162.            "The king and queen did eat thereof",
  1163.            "and noblemen beside,",
  1164.            "and what they could not eat that night",
  1165.            "the queen next morning fried."
  1166.          } 
  1167. x = BEGIN(arg[1].."/pdf")
  1168. x.red =  function (self)
  1169.             return self:setcolor("both","rgb",1,0,0,0)
  1170.           end -- function
  1171. x.green = function (self)
  1172.             return self:setcolor("both","rgb",0,1,0,0)
  1173.           end -- function
  1174. x.blue =  function (self)
  1175.             return self:setcolor("both","rgb",0,0,1,0)
  1176.           end -- function 
  1177.  
  1178. x.showlines = function (self,t)
  1179.                self:show("")
  1180.                for i = 1,getn(t) do
  1181.                  self:continue_text(t[i])
  1182.                end -- for
  1183.               end -- function   
  1184. x:begin_page(A4.width,A4.height)
  1185. icon = x:open_image_file("png",arg[1].."/png","",0)
  1186. x:place_image(icon,30,350,1)
  1187. x:close_image(icon)
  1188. font = x:findfont("Times-Roman", "host", 0)
  1189. x:setfont(font, 14)
  1190. x:set_text_pos(300, 700)
  1191. x:red()
  1192. x:showlines(verse1)
  1193. x:green()
  1194. x:continue_text(" ")
  1195. x:showlines(verse2)
  1196. x:blue()
  1197. x:continue_text(" ")
  1198. x:showlines(verse3)
  1199. x:END()
  1200. You may have noticed that the last two examples had rather more in them than just method-calls. The chessboard example had while ... do ... end and if ... then ... end constructs. The King Arthur example had user-defined methods, red, green, blue, showlines. The definition of the showlines method used a for ... do ... end construct. It also used tables for the separate verses. What is going on? Time to come clean.
  1201. Under the bonnet
  1202. !Scribble uses PDFLIB 4.0.3 (http://www.pdflib.com/) which is available under the Aladdin Free Public License (version 8, Nov. 18, 1999). This a library of C functions for making PDF files. It comes with bindings for Java, Perl, PHP, Python and Tcl; that is to say, if you are compiling these languages from C, then you can include the functions defined in PDFLIB as well and the relevant binding code lets you define new built in functions to create PDF files. Luiz Henrique de Figueiredo, one of the authors of Lua, which is free and copyright of TeCGraf, PUC-Rio, (http://www.lua.org/)
  1203. wrote a binding for Lua 4.0 and this is what I have used to create !Scribble. What this means is that Scribble is actually a small fragment of Lua with extra PDF-specific functions, namely BEGIN and the document methods, built-in. So to create PDF files with !Scribble you can use the full power of Lua as a programming language. I tried to persuade you in the first two examples that all you needed to know were those 78 document methods (only a few of them will get you quite far). Strictly speaking that is correct. But I hope that the last two examples demonstrate how Lua lets you extend the built-in core of Scribble further. In effect you can tailor the language to  suit the kind of documents that you want to construct. Furthermore Scribble is not restricted to the double clicking way of creating PDF files that I have described above. For example, it could also be used to create PDF files from a database of text and pictures, using templates, in response to user queries.
  1204. The reference manual for PDFLIB is a PDF file over a megabyte in size. The Scribble document-methods correspond in a fairly obvious way to the C functions described in it. Scribble's documentation is fairly perfunctory at the moment, and I hope to improve it gradually, at the same time testing out which features do or do not work under Risc OS. The absence of definitive PDF display software, like Acrobat Reader, makes this task more difficult. PDF has been defined round the standards for most of the common platforms, but not RISC OS, so certain sections of the PDFLIB manual can be ignored.
  1205. Graphics come down in the end to MOVE and DRAW commands, as in BBC Basic. So it is no surprise to find similarities between  the Drawfile format and parts of the PDF format. It should be possible to write a decompiler that translates a Drawfile into a Scribble file. Draw's notion of grouping objects could be translated into what PDFLIB calls templates - in effect, graphical subroutines. This would provide an avenue for creating graphics in PDF files by hand, avoiding the hassles of coordinate geometry that explicit coding brings.
  1206. Scribble is by no means a polished or completed artefact. I am not an expert with PDF. However, I hope that what is provided here is sufficient for others to use and develop.
  1207. Gavin Wraith
  1208.  
  1209. ÿÿÿÿVOLUME3/ISSUE3/SGAMES/INDEX.HTM Volume 3, Issue 3, StrongGames 233
  1210.  
  1211.  
  1212.  
  1213. StrongGames 233
  1214. Matthew Thompson
  1215. When I upgraded my A440/1 to a RISC PC I didn't realise how much of my games collection would become unusable, however with the release of StrongGuard and patches by various people over the years, list of games that fail on StrongARM machines is getting shorter each month.
  1216. However this is mainly the commercial games that have been fixed, but what about all those public domain games? You know the ones that used to live on the huge collections of floppy discs acquired from various PD libraries, some of these games were of very good quality, and some better than many commercial offerings.
  1217. Many of these have been lost or forgotten about, until iSV Products (now part of APDL) released a collection of over 200 of these games on one CD, many of them have been tweaked so that you can play them again on StrongARM machines and most of them are also RISC OS 4 compatible too.
  1218. Whats on the CD?
  1219.  
  1220. When you load the CD for the first time click on !Gameview and you can view a database which has the games divided up into different types of game and also shows a screenshot of the game so you can see what it looks like and if you like the look of it then click on 'open folder' and you can run then game directly from there, which is a good idea as you don't have to go through endless directorys to run the game you want.
  1221. The categories of games are:
  1222. Adventur
  1223. Arcad
  1224. Demos (of commercial games
  1225. Deskto
  1226. Educatio
  1227. Flightsi
  1228. Multipla
  1229. Plafor
  1230. Puzzl
  1231. Racin
  1232. ShootEmU
  1233. Sill
  1234. Sport
  1235. Strateg
  1236. NotRISCOS4
  1237.  
  1238. So which ones are worth playing? I've listed my personal favourites from this disc (obviously everyone will have their own favourites) but these are the ones I think are worth playing, and if you haven't played them, then give them a go.
  1239.  
  1240. Hopper - (arcade section) this is virtually a carbon copy of the Acornsoft version from the BBC days, very playable and on RISC OS4 the frog is difficult to see so you need to run one of the utils supplied on the disc to slow it down (also if you like Hopper check out Frogger as well - just for the silly sound effects if nothing else).
  1241. Pssst! - (arcade section) nothing to do with having to much beer, but a remake of one of the Ultimate Play The Game title from the ZX Spectrum, and its identical to the original, you have to protect your plants from the bugs by spraying them - and thats it, simple but a nice little game.
  1242. ChaosDemo - (demos) a demo version of the Chaos Engine, a brilliant 'if they move shoot them' game bit, a classic game as most Bitmap Brothers games were, full version available from 
  1243. Spobbleoid - (demo) a demo of the original Spobbleoid game, collect the items before the time runs out avoiding or killing the monsters, and having to deal with various different types of blocks (one way, timed blocks, locks & keys) this is a superb game, which I still haven't finished but keep coming back to, it is still available from 
  1244.  
  1245. Pigeons (multiplay) a game for two players, you have to dispose of your opponent pigeon by 'pooing' on it, thats basically it an aeroplane flies over making silly noises and drops bonuses, not a classic game but good for a laugh.
  1246.  
  1247. YAIG (shootemup) this game goes back years and of the many PD space invaders clones I found this one to be one of the better ones, fast and endless waves of bizarre aliens (toilets and self peeling bananas) for you to dispose of, the usual rules apply, if you like shooting them up then try this one.
  1248. Roller (platform) a revamp of the BBC classic game Ghouls, each level is the same but instead of the Pac-Man on legs you are now a ball for some reason, but while its still a good game, it doesn't quite have the haunting atmosphere of the BBC original, a shame really.
  1249. Manic Miner (platform) One of the best early 1980s platformers, gets updated to todays machines, and retaining all the originality of the ZX Spectrum version, this is the best version of it i've seen, all the levels are identical, and the graphics have been tarted up, and the music is too although its vastly better now, if you've never played this (where've you been) then you must play it now, collect the keys to open the exit and get to the exit, over 20 screens which get more and more difficult theres, also a bonus set of screens to play through as well, this is the ultimate version of this game, and is highly recommended.
  1250.  
  1251.  JSW (platform) Jet Set Willy is (for me anyway) THE classic 80s game, this game originated on the ZX Spectrum and subsequently appeared on every 80s home computer, and followed up with the sequel Jet Set Willy2. This RISC OS version has the full JSW1 & JSW2 games, which are the same as the originals but have had the graphics greatly improved and they are still as playable as the original versions were, however as good as this version is, there are a few things that are missing, and it would be good if they could be added, one is the fact that at the end of the game it just says "Game Over" as is tradition with JSW an end of a game means that the foot comes down and splats you!, and the music is not very good either, a large selection of Maestro tunes (which i've never rated) are available but its better to just have the sound effects, it would be good if you could have both the effects and some jazzed up version of the original JSW tunes, any takers? apart from that its a very good conversion and also includes a full multitasking editor if you wish to create your own games, two of which are included "Hyperspace" and "HouseOfFun" apart from the two minor points this is a classic game which everyone should have.
  1252. Other games worth checking out are BunnyRace, SheepRace, Marsquake, Blurp, Scotty, Splodge Styx, Pushy2, Hedz.
  1253. There is a directory called "NotRISCos4" as these games apparently didn't work on the RISC OS 4 machines that they were tested one, however some of them work fine on my machine so its worth trying them to see if they work, Lemings works well, (the PD copy of the commercial game) but Mr Doo is a lost cause, but Phaethon works on OS4 so best to try them to see which ones work.
  1254. It is also worth mentioning that there a number of commercial games included on here including Terramex, Twin World, Masterbreak and also Elite, so if you don't have these it's worth buying StrongGames just for these alone.
  1255. It would take forever to cover every game on here but there is surely something for everyone on here with platformers, arcade games, flight sims, chess, strategy games there is bound to be something to interest everyone who likes to play games on the computer.
  1256. This CD is highly recommended and is well worth getting if you want to add loads of games to your collection or as was the case with me, to replace all those old PD games on floppy discs and have them on a nice convenient CDROM and the bonus of them being updated for use on RISC OS 4 and StrongARM machines.
  1257. Product details
  1258. Product:
  1259. StrongGames 23
  1260. Supplier:
  1261. APD
  1262. Price:
  1263. £12.5
  1264. Address:
  1265. 39 Knighton Park Road, Sydenham, London, SE26 5R
  1266. Tel:
  1267. 0208 778 265
  1268. WWW:
  1269. E-mail:
  1270.  
  1271. A demo copy of the StrongGames front end showing all the games available (along with screen shots) is in the software directory on this issue of RISC World and there's also a special Reader's offer. See the Index page for details.
  1272. Matthew Thompson
  1273.